表示しているチャートの足が変わったタイミングで処理する方法や、
OnTimer関数で一定時間ごとに処理する方法等がありますが、
ここでは、OnTimerを使わず、
1分足チャートを表示しつつ、5分に1回処理をする方法を書いていきたいと思います。
引数の無い「Bars」には、現在のチャート内のバー数が格納されています。
1分足チャートで「Bars」を呼び出すと、1分足のバー数が返ってくる為、
5分経過したことの計算が別途必要です。
それは面倒なので、簡単に書ける 引数ありの「Bars」を使用します。
グローバル変数を使用して、EA起動時の5分足バー数を記録。
あとはイベントハンドラ(OnTickやOnTimerなど)で現在の5分足バー数を取得。
足が変わると、現在のバー数が増えるので、その違いをキャッチし、
5分経過した と判断します。
実行結果
5分毎に1回だけ、Printできています。
引数あり「Bars」に指定する時間軸は、「ENUM_TIMEFRAMES」列挙の値を指定します。
ENUM_TIMEFRAMES(チャート時間軸)定数は、以下を参考にしてください。
I D | 値 | 詳 細 |
---|---|---|
PERIOD_CURRENT | 0 | 現在チャートの時間軸 |
PERIOD_M1 | 1 | 1分 |
PERIOD_M5 | 5 | 5分 |
PERIOD_M15 | 15 | 15分 |
PERIOD_M30 | 30 | 30分 |
PERIOD_H1 | 60 | 1時間 |
PERIOD_H4 | 240 | 4時間 |
PERIOD_D1 | 1440 | 1日 |
PERIOD_W1 | 10080 | 1週間 |
PERIOD_MN1 | 43200 | 1ヶ月 |
応用すれば、1時間に1回 や 1日に1回 なんて処理の仕方もできますね。