ヒストリカルデータの取得はスクリプトを使わなくてもMT5のUIから可能です。ただ、スクリプトを使えば様々な時間足のデータを簡単に作成できますし、インジケーターの値の出力もできます。
この記事では、ベースとなる4本値を出力するスクリプトを紹介します。
ソースコード
#property copyright "shanch2@gmail.com"
#property link ""
#property version "1.00"
#property script_show_inputs
input datetime StartTime = "2012-01-01";
input datetime EndTime;
input ENUM_TIMEFRAMES tf = PERIOD_CURRENT;
void OnStart()
{
Create();
MessageBox("Done!");
}
void Create()
{
string fileName = Symbol() + StringSubstr(EnumToString(tf), StringFind(EnumToString(tf), "_")) + ".csv";
int handle = FileOpen(fileName, FILE_CSV|FILE_WRITE, ',');
int iStart = iBarShift(NULL, tf, StartTime);
int iEnd;
if(EndTime == 0)
{
iEnd = iBarShift(NULL, tf, TimeCurrent());
}
else
{
iEnd = iBarShift(NULL, tf, EndTime);
}
FileWrite(handle, "DateTime", "Open", "High", "Low", "Close");
for(int i=iStart; i>= iEnd; i--)
{
datetime dt = iTime(NULL, tf, i);
double open = iOpen(NULL, tf, i);
double high = iHigh(NULL, 0, i);
double low = iLow(NULL, 0, i);
double close = iClose(NULL, tf, i);
FileWrite(handle, dt, open, high, low, close);
}
FileClose(handle);
}