//+------------------------------------------------------------------+ #property copyright "Copyright © 2020, https://cmillion.ru" #property link "https://t.me/smarthedge" #property version "1.00" #property strict #property description "Cкрипт выгружает котировки в файл" #property script_show_inputs ENUM_TIMEFRAMES TF = PERIOD_CURRENT; input datetime TimeStart = D'2019.03.01'; input datetime TimeEnd = D'2020.03.01'; string txt; //-----------------------------------------------------------------------// // // // // // START // // // // // //-----------------------------------------------------------------------// void OnStart() { string Symbol1=Symbol(); txt=StrCon(Symbol1," ",StrTF(TF)); string FilePath="quotations "+txt+".txt"; FileDelete(FilePath); int handle=FileOpen(FilePath,FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_READ|FILE_WRITE|FILE_TXT); if(handle==INVALID_HANDLE) {Comment("Ошибка создания файла ",FilePath);return;} FileSeek(handle,0,SEEK_SET); int Digits1=(int)SymbolInfoInteger(Symbol1,SYMBOL_DIGITS); int i,BarStart=iBarShift(Symbol1,TF,TimeStart); txt=StrCon(txt,"\nBar в истории = ",IntegerToString(BarStart)); Comment(txt); for(i=BarStart; i>0; i--) { if (iTime(Symbol1,TF,i)=TimeEnd) break; double price=iOpen(Symbol1,TF,i); if (price==0) { txt=StrCon(txt,"\nОшибка котировок ",TimeToString(iTime(Symbol1,TF,i))); Comment(txt); continue; } Comment(txt,"\n",IntegerToString(i)); string txt1=StrCon(DoubleToString(price,Digits1),";",DoubleToString(iHigh(Symbol1,TF,i),Digits1),";",DoubleToString(iLow(Symbol1,TF,i),Digits1),";",DoubleToString(iClose(Symbol1,TF,i),Digits1)); StringReplace(txt1,".",","); txt1=StrCon("\n",TimeToString(iTime(Symbol1,TF,i)),";",txt1); FileWriteString(handle,txt1); } FileClose(handle); Comment(txt,"\nФайл ",FilePath," успешно записан"); } //------------------------------------------------------------------- string StrCon(string t1=NULL,string t2=NULL,string t3=NULL,string t4=NULL,string t5=NULL,string t6=NULL,string t7=NULL,string t8=NULL,string t9=NULL) { string str; #ifdef __MQL4__ str=StringConcatenate(#endif #ifdef __MQL5__ StringConcatenate(str,#endif t1,t2,t3,t4,t5,t6,t7,t8,t9); return(str); } //+------------------------------------------------------------------+ string StrTF(int t=0) { if (t==0) t=Period(); switch(t) { case 1: return("M1"); case 5: return("M5"); case 15: return("M15"); case 30: return("M30"); case 60: return("H1"); case 240: return("H4"); case 1440: return("D1"); default: return(IntegerToString(t)); } } //--------------------------------------------------------------------