【MQL4テクニック】指定の時間からバーのシフト数を取得する方法
時間を指定してバー(ローソク足)のシフト数を取得する方法をご紹介します。
例えば5分足で動かしているときに、現在の足のオープン時間が1分足では何本前かというのが知りたいときなどに役立ちます。
iBarShift関数を利用して指定の時間からバーシフト数を取得する
iBarShift関数は、以下の書式で時間を指定してバーのシフト数を取得することができます。
int iBarShift(string symbol, int timeframe, datetime time, bool exact = false);
引数の意味は以下です。
引数名 | 詳細 |
---|---|
symbol | 通貨ペアを指定します。 |
timeframe | 時間足を指定します。 |
time | シフト数を取得したい時間を指定します。 |
exact | 検索モードを指定します。 false: 指定した時間のバーが存在しない場合、一番近いバーのシフト数を返します。デフォルトの設定はfalseです。 true: 指定した時間のバーが存在しない場合、-1を返します。 |
実際に取得してみる
コードを書いて、実際に取得してみます。
datetime time = iTime(Symbol(), Period(), 10);
datetime future = time + Period() * 60 * 100;
Print(iBarShift(Symbol(), Period(), time, false));
// 結果10
Print(iBarShift(Symbol(), Period(), future, false));
// 結果 0
Print(iBarShift(Symbol(), Period(), future, true));
// 結果 -1
iTime関数を用いてシフト数が10のバーのオープン時間を取得し、それに100本分の時間を足して存在しない(未来の)時間を用意します。
存在しない時間を参照しているので、exactがfalseの場合は最新足のシフト数である0が、trueの場合は-1が返ります。
この関数を応用すれば、1分足のチャートから5分足のシフト数を取得するなど様々な応用が可能です。
POINT
こちらの記事で悩みが解決されない場合は、
MQL4 User Community に参加してお気軽にご質問ください。
MQL4初心者の方や開発に行き詰った方の悩みを、
様々なソフトウェアやツールを開発してきた経験豊富なエンジニアたちが解決いたします。