//+------------------------------------------------------------------+ //| SpredMonitor.mq4 | //| Copyright 2015, Tor | //| http://www.einvestor.ru | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, Tor" #property link "http://www.einvestor.ru" #property version "1.00" #property strict string ValPar[29]; bool OpeningCandles=true; // Work at the opening of the candles //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- ValPar[0] = Symbol(); ValPar[1] = "EURUSD"; ValPar[2] = "USDJPY"; ValPar[3] = "EURJPY"; ValPar[4] = "GBPUSD"; ValPar[5] = "USDCHF"; ValPar[6] = "USDCAD"; ValPar[7] = "AUDUSD"; ValPar[8] = "NZDUSD"; ValPar[9] = "GBPCHF"; ValPar[10] = "GBPJPY"; ValPar[11] = "EURAUD"; ValPar[12] = "EURCHF"; ValPar[13] = "EURGBP"; ValPar[14] = "EURCAD"; ValPar[15] = "EURNZD"; ValPar[16] = "CADJPY"; ValPar[17] = "GBPAUD"; ValPar[18] = "GBPCAD"; ValPar[19] = "GBPNZD"; ValPar[20] = "CHFJPY"; ValPar[21] = "AUDCAD"; ValPar[22] = "AUDJPY"; ValPar[23] = "AUDCHF"; ValPar[24] = "AUDNZD"; ValPar[25] = "CADCHF"; ValPar[26] = "NZDCHF"; ValPar[27] = "NZDCAD"; ValPar[28] = "NZDJPY"; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- static datetime nt=0; static bool alertTF=false; static int MinSpread[29]; static int MaxSpread[29]; if(OpeningCandles){ if(Time[0]==nt){ return; } } nt=Time[0]; if(_Period>1) { Alert("Please change TF to M1"); if(alertTF){ return; } alertTF=true; return; } for(int x=1; x<=28; x++) { int spred=(int)MarketInfo(ValPar[x],MODE_SPREAD); if(MinSpread[x]==0){ MinSpread[x]=spred; } if(MaxSpread[x]==0){ MaxSpread[x]=spred; } if(MinSpread[x]>spred){ MinSpread[x]=spred; } if(MaxSpread[x]0 && Minute()==58) || (MinSpread[1]>0 && Minute()==28)) { /* save that had accumulated in the log */ string stroka=IntegerToString(Day())+"."+IntegerToString(Month())+"."+IntegerToString(Year())+"_"+IntegerToString(Hour())+"."+IntegerToString(Minute())+"|"; for(int x2=1; x2<=28; x2++) { stroka=stroka+""+ValPar[x2]+"="+IntegerToString(MinSpread[x2])+":"+IntegerToString(MaxSpread[x2])+"|"; } int file_handle=FileOpen("spread.txt",FILE_TXT|FILE_READ|FILE_WRITE); if(file_handle!=INVALID_HANDLE) { FileSeek(file_handle,0,SEEK_END); FileWriteString(file_handle,stroka+"\r\n"); FileClose(file_handle); } /* reset data */ ArrayInitialize(MinSpread,0); ArrayInitialize(MaxSpread,0); } return; } //+------------------------------------------------------------------+