MARKET
9/25 8:27 時点|ドル円158.78▼-7 pips|ドル円 予想レンジ158.41 〜 159.23|ドル円 上の節目158.90▲|ドル円 下の節目157.80▼|ユーロドル1.1378▼-2 pips|ユーロドル 予想レンジ1.1351 〜 1.1408|ユーロドル 上の節目1.1403▲|ユーロドル 下の節目1.1359▼|きょうの指標重要指標なし|

iBarShift ― 指定した時刻が何本目の足かを調べる|MQL4/MQL5リファレンス

MQLリファレンス›関数時系列・履歴iBarShift
MQL4 / MQL5 両対応時系列・履歴よく使う

iBarShift指定した時刻が何本目の足かを調べる

「この時刻はチャートの何本前の足か」を、足の番号(0=最新)で返す関数。時刻から足番号への変換はここでしか出来ないため、パネル表示・時間帯の判定・過去の値の参照など、あらゆる場面で使う。

1書式

int  iBarShift(
   string        symbol,       // 通貨ペア(NULL=いま見ているチャート)
   int           timeframe,    // 時間足。PERIOD_M1 などの定数
   datetime      time,         // 調べたい時刻
   bool          exact=false   // true=足が無ければ -1 を返す
);

引数の並びは同じ。timeframe の型だけ違うので、MQL4のコードをそのまま持ってくると「int を ENUM_TIMEFRAMES に変換できません」でコンパイルが止まる。

2引数

引数 内容
symbol 調べたい通貨ペア。NULLでいま見ているチャートの銘柄
timeframe 時間足。MQL4はPERIOD_M1などのint定数、MQL5はENUM_TIMEFRAMES型
time 調べたい時刻(サーバー時間)
exact false(既定)=指定時刻に一番近い足を返す。true=ぴったりの足が無ければ -1

3戻り値

足の番号(0=最新の確定していない足)。timeが読み込んだ履歴より古い場合は、読み込んだ中で一番古い足の番号を返す。exact=trueでぴったりの足が無ければ -1。

4実際に動かした結果

足の番号は「いまの足=0」から左(過去)へ増えていく

7654 3210 11:55 → 5 12:00 → 0 ← 過去 いま →

M1・8本ぶん。右端(0)が最新の足で、左へ行くほど番号が増える。timeにちょうど合う足が無いときは「その時刻を含む足」に丸められる(下のH1の例)。

上位足では「時刻を含む足」に丸められる(H1の例)

8:009:00〜10:00 の足10:00 time = 9:30

9:30ちょうどの足は無いので、9:30を含む「9:00〜10:00の足」を返す。exact=trueにすると、ぴったりの時刻が無いこの状況では -1 になる。

✓ 実測

USDJPY・M1・サーバー時刻 2026-09-21 12:00:00 のチャートで実行。

呼び出し 結果
iBarShift(NULL, PERIOD_M1, D’2026.09.21 12:00:00′) 0(いまの足そのもの)
iBarShift(NULL, PERIOD_M1, D’2026.09.21 11:55:00′) 5(5本前)
iBarShift(NULL, PERIOD_H1, D’2026.09.21 09:30:00′) 2(H1では9:00の足に丸められる)

5使用例:1時間前の高値を読む

datetime target = TimeCurrent() - 3600;
int idx = iBarShift(NULL, PERIOD_M1, target);
double hi = iHigh(NULL, PERIOD_M1, idx);
Print("1時間前の高値: ", hi);

MetaEditorでコンパイル0エラー・0警告を確認済み。

6MQL4→MQL5の違い

🔁 差分

timeframe の型が int → ENUM_TIMEFRAMES に変わる。「MQL4は分数の整数を直接渡していた」コードは、MQL5では列挙型へ書き換えが要る。

逆に言えば、この2つの型を両方受け取る自前の変換関数を1本作っておくと、他の時間足がらみの関数(iOpen・iClose・iTime など)でも使い回せる。

7よくある罠

⚠ 実務で踏んだもの
  • MT5では処理が重くなることがある。上位足の本数が多いインジケーターで、毎ティック iBarShift を呼ぶと描画が詰まった実例あり。呼ぶ回数を減らすか、自前の二分探索に置き換える(時刻の配列は昇順なので二分探索できる)のが定石。
  • 上位足の配列(自作の g_t[] など)と組み合わせて使うとき、配列の範囲を確かめずに読むと範囲外アクセスになる。時間足の切り替え直後や起動直後、上位足の本数がまだ揃っていない瞬間に踏みやすい。

8関連する関数

9使っている無料ツール

REI_PriceAction・REI_Harmonic — 上位足のパターンを、時間足を切り替えても同じ場所からずれずに重ねるために使用(PriceAction・Harmonic)
公式リファレンス:MQL4 / MQL5(英語・要約は転載しません)

MORNING BRIEF平日 毎朝7時までに更新

今日はどこを見ればいいか。

ドル円とユーロドルの主要ライン・予想高値安値を、平日の朝に図1枚にまとめています。

朝刊を見る→
9/25 8:27 時点ドル円158.78▼-7 pipsドル円 予想レンジ158.41 〜 159.23ドル円 上の節目158.90▲ドル円 下の節目157.80▼ユーロドル1.1378▼-2 pipsユーロドル 予想レンジ1.1351 〜 1.1408ユーロドル 上の節目1.1403▲ユーロドル 下の節目1.1359▼きょうの指標重要指標なし
REI-FX&BO OFFICIAL LINE

ツールのダウンロードパスワードは
公式LINEで、すぐ届きます。

友だち追加の自動返信でパスワードをお送りします。
新しいツールの公開や、検証でわかったことも先にお知らせします。

全ツールのパスワード新作ツールをいち早く配信は月1〜2回だけ
LINEで友だち追加 パスワードを受け取る ›

追加後にひとことメッセージをいただけると、ツールづくりの参考にします。