時間を指定してバー(ローソク足)のシフト数を取得する方法をご紹介します。
例えば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));
// 結果 -1iTime()関数を用いてシフト数が10のバーのオープン時間を取得し、それに100本分の時間を足して存在しない(未来の)時間を用意します。
存在しない時間を参照しているので、exactがfalseの場合は最新足のシフト数である0が、trueの場合は-1が返ります。
この関数を応用すれば、1分足のチャートから5分足のシフト数を取得するなど様々な応用が可能です。
