【移植#88】前週最後のバーは何本前? — 日曜0時と実在する足で探す¶

この記事の3行まとめ
- サーバー時刻の日曜0時を週の境界にし、その前後に実在する足を探します
- 月曜の始値時刻や日足の本数は固定せず、前週最後の足が現在の足から何本前かを表示します
- EURUSD H1の8週分で、表示と別の計算方法による照合が一致しました
「土曜朝の足」を時刻だけで決めない¶
前回の移植#87では決済理由を数えました。今回は2010年4月27日の「週末(土曜日の朝)の最後の足のバーまでのバーの数の出し方」を移植します。
元記事が扱うのは、チャートの現在足から見て、前週最後の足が何本前にあるかという問いです。月曜05~08時のどこかが市場開始だと決め打ちしたり、日足が毎営業日そろっていると仮定したりすると、ブローカーや祝日によってずれます。元記事はサーバー時刻の日曜0時を基準にする方法を示しました。
ここでの「前週最後」は日曜0時より前に開始した最後のバーです。「土曜朝」は元記事で想定された呼び方であり、実際の曜日や時刻を固定する意味ではありません。市場やサーバー時刻によって金曜、土曜などに変わります。
境界の前後を、実在する足から選ぶ¶
配布したMT5インジケーターは、まずチャートに読み込まれた最新バーの時刻を取得します。そのサーバー時刻を含む週の日曜0時を作り、そこから1週ずつ過去の境界を求めます。CopyTime()で得たバー開始時刻の列から、次の組を探します。
時刻列は古い足から新しい足へ並べて走査します。前週の最後の足の位置は、読み込まれた最新バーを0本前としたときの本数です。直後の足との時間差は「休場を含むバー開始時刻の間隔」として表示します。境界の前後に有効な足が見つからなければ、値を作らずに不足を表示します。
元記事ではiBarShift(..., false)で日曜0時より前の足を探しています。MT5の仕様でもexact=falseは指定時刻より前に開始した近い足を返します。今回の実装は、前後両側の足を同時に示し、週をまたぐ隣接関係を確認するため、CopyTime()の時刻列を使いました。日付の曜日はTimeToStruct()のday_of_weekから求めます。
実機で8週を照合¶
MT5 Build 6182のEURUSD H1チャートで、配布インジケーターと別の検証用プログラムをそれぞれ0エラー・0警告でコンパイルしました。検証用プログラムはiBarShift()とiTime()から独立に境界の両側を計算し、画面の8行すべてについて最終バー、次週最初のバー、現在からの本数、時間差を照合しています。
撮影時にチャートへ読み込まれた最新バーは2026年9月28日14:00でした。直近の日曜境界と結果は次の通りです。いずれもサーバー時刻です。
| 日曜0時 | 境界前の最後の足 | 境界後の最初の足 | 最新足から | 足の開始時刻の差 |
|---|---|---|---|---|
| 2026-09-27 00:00 | 09-25 23:00 | 09-28 00:00 | 15本前 | 49.0時間 |
画面にはこの週を含む8週を表示し、8週とも独立計算と一致しました。画像の縦線は、直近の境界前後にある2本の足を指しています。49時間はこの検証データの値であり、毎週の市場停止時間や他社の配信時刻を保証する数字ではありません。表示プログラムは注文を出さず、検証中に注文・ポジション数は変わりませんでした。終了時には自分の描画だけを消し、別の描画は残ることも確認しました。
使い方¶
88_Weekly_Boundary_Bars_v1_00.mq5 をダウンロード
- MT5のデータフォルダの
MQL5/Indicatorsへ保存し、MetaEditorでコンパイルします。 - 確認したい銘柄・時間足のチャートに追加します。上部パネルに各週の日曜境界、前週最後の足、次週最初の足、現在からの本数が表示されます。
- 履歴不足と表示された場合は、チャートの過去データを読み込んでから確認します。
| 入力 | 既定値 | 役割 |
|---|---|---|
InpWeeksToShow | 8 | 表示する週数(1~8) |
InpHistoryBars | 5000 | 調べるバーの上限。週数に対して少なすぎる値は受け付けません |
InpInstanceId | A | 同じチャートで複数使うときの描画識別子 |
この表示は、週明け直後の取引を避ける条件などを考えるための足の位置情報です。売買可否や収益性を判定するものではありません。サーバーの日付・時刻を基準にするため、ブローカーの配信時刻、夏時間、銘柄の取引日、履歴の欠落で結果は変わります。日曜0時をまたいで取引される銘柄では、境界の両側に足があっても「週末休場」を意味しません。
あわせて読みたい記事¶
次: 【移植#89】形成中の日足EMAをたどる — H1確定値から軌跡を描く