MQL5で時系列データを取得する方法

MT5

MQL5で売買を自動化するとき、売買するべきタイミングや価格などを知るためには、なによりもまず直近および過去の一定期間の高値・安値などの時系列データが必要です。

ただ、私の探し方が悪いのかもしれませんが、サンプルプログラムを少し探しただけでは見つけることができませんでした。この記事ではごく簡単なサンプルを記します。

時系列データの取得方法

この目的では、CopyLow, CopyHigh関数を使用できます。

まずArraySetAsSeries関数に動的配列を渡すことで、AS_SERIESフラグをセットします。

timeframeには現在の時間軸を表すPERIOD_CURRENTを指定しています。表示されているチャートの時間軸で数値を取得します。1分足、1時間足など具体的な時間軸を固定したい場合はPERIOD_M1, PERIOD_H1などを指定できます(参考:チャート時間軸)。

その後、CopyLow, CopyHigh関数で時系列データを取得します。

最後に、時系列データの中身を表示しています。なお、このデータは最新データから過去に向かって格納されるため、Low[0]やHigh[0]が最新データ、Low[1]やHigh[1]が1つ前のバーのデータです。MT5のチャートのデータと比較すると、確かに同じ結果になっていることが分かると思います。

このようにCopyLow, CopyHigh関数を使うと配列として安値・高値を取得できるので、ループを回して売買すべきタイミングを調べるといったことが可能です。

void OnStart()
{
   double Low[], High[];
  
   ENUM_TIMEFRAMES timeframe = PERIOD_CURRENT;
   
   ArraySetAsSeries(Low, true);
   int copied = CopyLow(Symbol(), timeframe, 0, Bars(Symbol(), timeframe), Low);
   
   ArraySetAsSeries(High, true);
   copied = CopyHigh(Symbol(), timeframe, 0, Bars(Symbol(), timeframe), High);
   
   printf(Low[0]);
   printf(Low[1]);
   printf(High[0]);
   printf(High[1]);
}

参考:https://www.mql5.com/ja/docs/series/copyhigh

タイトルとURLをコピーしました