MQL5

MT5用ヒストリカルデータ取得スクリプト

ヒストリカルデータの取得はスクリプトを使わなくても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);
}