//+------------------------------------------------------------------+
//| History_in_MathCAD.mq5 |
//| Privalov S.V. |
//| https://login.mql5.com/en/users/Prival |
//+------------------------------------------------------------------+
#property copyright "Privalov S.V."
#property link "https://login.mql5.com/en/users/Prival"
#property version "1.08"
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//----
WriteFile( 1,5,2010); // day, month, year
WriteFile( 1,6,2010); //
return;// script completed
}
//+------------------------------------------------------------------+
//| WriteFile |
//+------------------------------------------------------------------+
int WriteFile(int Day,int Month,int Year)
{
//--- if Day<1, then we get data from the beginning of month
if(Day<1) Day=1;
string FileName="";
int copied=0;
int FileHandle=0;
//--- file name formation, (Symbol+Period+Month) EURUSD_M1_09.txt
FileName=Symbol()+"_"+fTimeFrameName(_Period)+"_"+IntegerToString(Month,2,'0')+".TXT";
MqlRates rates[];
MqlDateTime tm;
ArraySetAsSeries(rates,true);
string start_time=IntegerToString(Year)+"."+IntegerToString(Month,2,'0')+"."+IntegerToString(Day,2,'0'); // ñ êàêîé äàòû
ResetLastError();
copied=CopyRates(Symbol(),_Period,StringToTime(start_time),TimeCurrent(),rates);
if(copied>0)
{
//--- open file for writing, ANSI codepage
FileHandle=FileOpen(FileName,FILE_WRITE|FILE_ANSI);
if(FileHandle!=INVALID_HANDLE)
{
for(int i=copied-1;i>=0;i--)
{
TimeToStruct(rates[i].time,tm);
if(tm.day>=Day && tm.mon==Month && tm.year==Year) // check for the specified range
FileWrite(FileHandle,// write data to file
DoubleToString(rates[i].time,0), // number of seconds, passed from 1st January 1970
rates[i].open, // Open
rates[i].high, // High
rates[i].low, // Low
rates[i].close, // Close
rates[i].tick_volume, // Tick Volume
tm.year, // your
tm.mon, // month
tm.day, // day
tm.hour, // hour
tm.min, // minutes
tm.day_of_week, // week day (0-sunday, 1-monday)
tm.day_of_year); // day index in the year (1st January is the 0-th day of the year)
}
Print("Data of the ",IntegerToString(Month,2,'0')," month ",Year," year written to file ",FileName);
}
else Print("Error in call of CopyRates for the Symols",Symbol()," err=",GetLastError());
}
//--- close file (free handle), to make it available for other programs
FileClose(FileHandle);
return(0);
}
//+------------------------------------------------------------------+
//| fTimeFrameName |
//+------------------------------------------------------------------+
string fTimeFrameName(int arg)
{
int v;
if(arg==0)
{
v=_Period;
}
else
{
v=arg;
}
switch(v)
{
case PERIOD_M1: return("M1");
case PERIOD_M2: return("M2");
case PERIOD_M3: return("M3");
case PERIOD_M4: return("M4");
case PERIOD_M5: return("M5");
case PERIOD_M6: return("M6");
case PERIOD_M10: return("M10");
case PERIOD_M12: return("M12");
case PERIOD_M15: return("M15");
case PERIOD_M20: return("M20");
case PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
case PERIOD_H2: return("H2");
case PERIOD_H3: return("H3");
case PERIOD_H4: return("H4");
case PERIOD_H6: return("H6");
case PERIOD_H8: return("H8");
case PERIOD_H12: return("H12");
case PERIOD_D1: return("D1");
case PERIOD_W1: return("W1");
case PERIOD_MN1: return("MN1");
default: return("?");
}
} // end fTimeFrameName
Comments