
MQL4MQL5 時系列データ(バー・価格)
iBarShift()
- できること
- 時刻から、そのバーの位置(shift)を求める
- 対応
- MQL4・MQL5
iBarShift() とは
時刻を指定して、その時刻を含むバーの位置(shift)を返す関数です。上位足の値を下位足の各バーに対応させるマルチタイムフレームのインジケーターや、特定の時刻のバーを探すときに使います。
iBarShift() の書式と引数
MQL4 の場合MT4
int iBarShift(
string symbol,
int timeframe,
datetime time,
bool exact=false
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。 |
timeframe | int | 必須 | 時間足。 |
time | datetime | 必須 | 探す時刻。 |
exact | bool | false | true なら、その時刻ちょうどに始まるバーがないとき -1 を返します。false なら最も近い(その時刻を含む)バーを返します。 |
戻り値(MQL4)
バーの位置(0 が現在のバー)。見つからなければ -1。
MQL5 の場合MT5
int iBarShift(
const string symbol,
ENUM_TIMEFRAMES timeframe,
datetime time,
bool exact=false
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | const string | 必須 | 銘柄名。 |
timeframe | ENUM_TIMEFRAMES | 必須 | 時間足。 |
time | datetime | 必須 | 探す時刻。 |
exact | bool | false | true なら、その時刻ちょうどに始まるバーがないとき -1 を返します。false なら最も近い(その時刻を含む)バーを返します。 |
戻り値(MQL5)
バーの位置(0 が現在のバー)。見つからなければ -1。
iBarShift() の使い方(コード例)
MQL4・MQL5 共通
// 現在の足(1時間足チャート想定)を含む日足の位置と、その日足の高値
datetime t = iTime(_Symbol, PERIOD_CURRENT, 0);
int d = iBarShift(_Symbol, PERIOD_D1, t);
if(d >= 0)
Print("日足の位置=", d, " その日の高値=", iHigh(_Symbol, PERIOD_D1, d));OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。












