MQL5 Marketinfo
//+------------------------------------------------------------------+
//| MarketInfo.mq5 |
//| Copyright 2010, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#define MODE_LOW 1
#define MODE_HIGH 2
#define MODE_TIME 5
#define MODE_BID 9
#define MODE_ASK 10
#define MODE_POINT 11
#define MODE_DIGITS 12
#define MODE_SPREAD 13
#define MODE_STOPLEVEL 14
#define MODE_LOTSIZE 15
#define MODE_TICKVALUE 16
#define MODE_TICKSIZE 17
#define MODE_SWAPLONG 18
#define MODE_SWAPSHORT 19
#define MODE_STARTING 20
#define MODE_EXPIRATION 21
#define MODE_TRADEALLOWED 22
#define MODE_MINLOT 23
#define MODE_LOTSTEP 24
#define MODE_MAXLOT 25
#define MODE_SWAPTYPE 26
#define MODE_PROFITCALCMODE 27
#define MODE_MARGINCALCMODE 28
#define MODE_MARGININIT 29
#define MODE_MARGINMAINTENANCE 30
#define MODE_MARGINHEDGED 31
#define MODE_MARGINREQUIRED 32
#define MODE_FREEZELEVEL 33
#define MAXSYMBOL 20
string Symb[MAXSYMBOL];
string FileName="";
int FileHandle=0;
MqlTick last_tick;
double Bid;
double Ask;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
Symb[0]="AUDCAD";
Symb[1]="AUDJPY";
Symb[2]="AUDNZD";
Symb[3]="AUDUSD";
Symb[4]="CADJPY";
Symb[5]="CHFJPY";
Symb[6]="EURAUD";
Symb[7]="EURCAD";
Symb[8]="EURCHF";
Symb[9]="EURGBP";
Symb[10]="EURJPY";
Symb[11]="EURUSD";
Symb[12]="GBPCHF";
Symb[13]="GBPJPY";
Symb[14]="GBPUSD";
Symb[15]="NZDUSD";
Symb[16]="USDCAD";
Symb[17]="USDCHF";
Symb[18]="USDJPY";
Symb[19]="USDMXN";
// file name formation, (Symbol+Period+Month) EURUSD_M1_09.txt
string header="SYMBOL,LOTSIZE,POINT,SPREAD,STOPLEVEL,DIGITS,TICKVALUE,TICKSIZE";
FileName="MarketInfo.csv";
FileHandle=FileOpen(FileName,FILE_WRITE|FILE_ANSI,',');
if(FileHandle!=INVALID_HANDLE)
{
FileWrite(FileHandle, header); // heading
for(int i=0; i<MAXSYMBOL ; i++)
{
SymbolInfoTick(Symb[i],last_tick);
Bid=last_tick.bid;
Ask=last_tick.ask;
int LotSize = MarketInfoMQL4(Symb[i], MODE_LOTSIZE);
double point = MarketInfoMQL4(Symb[i], MODE_POINT);
int spread = MarketInfoMQL4(Symb[i], MODE_SPREAD);
int msl = MarketInfoMQL4(Symb[i], MODE_STOPLEVEL);
int dg = MarketInfoMQL4(Symb[i], MODE_DIGITS);
double tval = MarketInfoMQL4(Symb[i], MODE_TICKVALUE);
double tsize = MarketInfoMQL4(Symb[i], MODE_TICKSIZE);
//double price1pip = tval/tsize*point*LotSize;
//Print(sym," ",tval," ",tsize," ",point);
string line=Symb[i]+","+LotSize+","+point+","+spread+","+msl+","+dg+","+tval+","+tsize;
FileWrite(FileHandle, line); // heading
}
}
FileClose(FileHandle);
}
//+------------------------------------------------------------------+
double MarketInfoMQL4(string symbol,
int type)
{
switch(type)
{
case MODE_LOW:
return(SymbolInfoDouble(symbol,SYMBOL_LASTLOW));
case MODE_HIGH:
return(SymbolInfoDouble(symbol,SYMBOL_LASTHIGH));
case MODE_TIME:
return(SymbolInfoInteger(symbol,SYMBOL_TIME));
case MODE_BID:
return(Bid);
case MODE_ASK:
return(Ask);
case MODE_POINT:
return(SymbolInfoDouble(symbol,SYMBOL_POINT));
case MODE_DIGITS:
return(SymbolInfoInteger(symbol,SYMBOL_DIGITS));
case MODE_SPREAD:
return(SymbolInfoInteger(symbol,SYMBOL_SPREAD));
case MODE_STOPLEVEL:
return(SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL));
case MODE_LOTSIZE:
return(SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE));
case MODE_TICKVALUE:
return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE));
case MODE_TICKSIZE:
return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE));
case MODE_SWAPLONG:
return(SymbolInfoDouble(symbol,SYMBOL_SWAP_LONG));
case MODE_SWAPSHORT:
return(SymbolInfoDouble(symbol,SYMBOL_SWAP_SHORT));
case MODE_STARTING:
return(0);
case MODE_EXPIRATION:
return(0);
case MODE_TRADEALLOWED:
return(0);
case MODE_MINLOT:
return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN));
case MODE_LOTSTEP:
return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));
case MODE_MAXLOT:
return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX));
case MODE_SWAPTYPE:
return(SymbolInfoInteger(symbol,SYMBOL_SWAP_MODE));
case MODE_PROFITCALCMODE:
return(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE));
case MODE_MARGINCALCMODE:
return(0);
case MODE_MARGININIT:
return(0);
case MODE_MARGINMAINTENANCE:
return(0);
case MODE_MARGINHEDGED:
return(0);
case MODE_MARGINREQUIRED:
return(0);
case MODE_FREEZELEVEL:
return(SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL));
default: return(0);
}
return(0);
}
///////////////////////////////////////////////////////////////////////////////////
SYMBOL,LOTSIZE,POINT,SPREAD,STOPLEVEL,DIGITS,TICKVALUE,TICKSIZE
AUDCAD,100000,0.00001000,61,120,5,0.00000000,0.00000000
AUDJPY,100000,0.00100000,30,70,3,0.00000000,0.00000000
AUDNZD,100000,0.00001000,100,500,5,0.00000000,0.00000000
AUDUSD,100000,0.00001000,18,50,5,0.00000000,0.00000000
CADJPY,0,0.00000000,0,0,0,0.00000000,0.00000000
CHFJPY,100000,0.00100000,40,100,3,0.00000000,0.00000000
EURAUD,100000,0.00001000,50,100,5,0.00000000,0.00000000
EURCAD,100000,0.00001000,61,150,5,0.00000000,0.00000000
EURCHF,100000,0.00001000,21,80,5,0.00000000,0.00000000
EURGBP,100000,0.00001000,15,80,5,0.00000000,0.00000000
EURJPY,100000,0.00100000,33,50,3,0.00000000,0.00000000
EURUSD,100000,0.00001000,12,50,5,0.00000000,0.00000000
GBPCHF,100000,0.00001000,59,100,5,0.00000000,0.00000000
GBPJPY,100000,0.00100000,62,100,3,0.00000000,0.00000000
GBPUSD,100000,0.00001000,24,50,5,0.00000000,0.00000000
NZDUSD,100000,0.00001000,31,80,5,0.00000000,0.00000000
USDCAD,100000,0.00001000,25,50,5,0.00000000,0.00000000
USDCHF,100000,0.00001000,26,50,5,0.00000000,0.00000000
USDJPY,100000,0.00100000,17,50,3,0.00000000,0.00000000
USDMXN,0,0.00000000,0,0,0,0.00000000,0.00000000