コンテンツにスキップ

【移植#03】JPN_Time_SubZero — 未来時間にもグリッド線を描画

JPN_Time_SubZero インジケーターの実行結果

JPN_Time_SubZero インジケーターの実行結果

この記事の3行まとめ

  • 🕐 日本時間でチャートにグリッド線を表示
  • 🔮 未来時間にもグリッド線を描画可能
  • 📊 サイクル分析やフィボナッチタイムゾーンの検証に便利

はじめに

この記事は、「とあるMetaTraderの備忘秘録」様のブログ記事をMQL5に移植するシリーズの第3弾です。

MT4/MT5のチャートはサーバー時間で表示されるため、日本時間でのグリッド線表示が欲しい場面があります。さらに、未来時間にもグリッドを引きたいという需要に応えたインジケーターです。

元ネタ

JPN_Time_SubZeroで未来時間にも線を引く
https://fai-fx.hatenadiary.org/entry/20090922/1253546210
(2009年9月22日 公開)


なぜ未来時間にグリッドが必要か

サイクル分析での活用

元記事ではJ.M. Hurst氏のサイクル分析法について言及されています。

サイクル分析では:

  • 現在のトレンドのピークがいつ来るかを予測
  • ピークが近いトレンドでの押し目買いを避ける
  • ピークが遠いトレンドでは積極的にエントリー
graph LR
    A[サイクル開始] --> B[上昇期]
    B --> C[ピーク予測]
    C --> D[下降期]
    D --> E[次のサイクル]

    style C fill:#ff9999

未来グリッドの意義

予測ラインの時刻を視覚的に確認できるため、「いつ頃にピークが来るか」を直感的に把握できます。


MQL5での実装ポイント

サーバー時間と日本時間の変換

MQL5ではサーバー時間で動作するため、日本時間(JST = UTC+9)への変換が必要です。

MQL
// 日本時間に変換
datetime serverTime = TimeCurrent();
datetime jstTime = serverTime + InpJPNOffset * 3600;  // 9時間を加算

未来時間への描画

通常のインジケーターは現在足までしか描画しませんが、OBJ_VLINEオブジェクトを使用することで未来時間にも線を引けます。

MQL
// 未来の時間を計算
datetime futureTime = baseServerTime + futureIndex * intervalSeconds;

// 垂直線を作成
ObjectCreate(0, lineName, OBJ_VLINE, 0, futureTime, 0);
ObjectSetInteger(0, lineName, OBJPROP_COLOR, lineColor);
ObjectSetInteger(0, lineName, OBJPROP_STYLE, STYLE_DOT);

グリッド間隔の丸め処理

4時間間隔のグリッドなら、0時、4時、8時、12時、16時、20時に線を引きます。

MQL
// 時間を丸める(例: 4時間間隔なら0, 4, 8, 12, 16, 20時)
int roundedHour = (jstStruct.hour / InpGridInterval) * InpGridInterval;

アップデート情報(v1.34)

アップデート情報(v1.40)

2026-02-04更新 (v1.40): - 予測ライン機能を追加:ボリンジャーバンド(±2σ)と中心線(SMA)を未来に延長して表示する機能を追加しました。 - サイクル分析において、将来の価格バンドを予測する補助として使用できます。

2026-02-04更新 (v1.34): - DebugMode有効時にテスターがフリーズする問題を修正。 - デバッグログを新バー出現時のみに制限し、過剰なログ出力を防止。

2026-02-04更新 (v1.33): - 未来ラインの描画成功数をデバッグ出力に追加。描画されない問題のトラブルシューティングが容易に。 - デバッグモード時に各未来ラインの時刻と、現在時刻との差分を詳細にログ出力。

2026-02-01更新 (v1.32): - ストラテジーテスターの「ビジュアライゼーションモード」での動作を改善。 - DebugModetrue にすると、チャート上にサーバー時間や描画予定時刻などのデバッグ情報を表示する機能を追加しました(通常時は false)。


使い方

  1. インジケータをチャートにドラッグ&ドロップ
  2. パラメータを設定
  3. 日本時間のグリッド線が過去から未来まで表示されます

パラメータ

パラメータ デフォルト 説明
ServerGMTOffset 2 ブローカーのGMTオフセット(夏時間+3/冬時間+2等)
GridInterval 4 グリッド間隔(時間)
FutureLines 5 未来に引く線の本数
LineColor Gray グリッド線の色
LineStyle DOT グリッド線のスタイル
ShowTimeLabel true 時刻ラベルを表示
FontSize 9 ラベルのフォントサイズ
DebugMode false デバッグログを出力(表示されない場合に使用)
Prediction Lines 予測ライン設定
ShowPrediction true 予測ライン(ボリンジャーバンド延長)を表示
BBPeriod 20 ボリンジャーバンド期間
BBDeviation 2.0 偏差
PredictionBars 10 未来に延長するバー数
PredictionColor Cyan 予測ラインの色

活用シーン

1. 東京市場の時間帯を視覚化

Text Only
GridInterval = 1(1時間ごと)
→ 9時〜15時の東京市場時間を把握

2. 重要時間帯の予測

Text Only
GridInterval = 4(4時間ごと)
FutureLines = 5
→ 今後20時間分のグリッドを表示

3. 週末までの時間を可視化

Text Only
GridInterval = 24(1日ごと)
FutureLines = 7
→ 1週間分のグリッドを表示

4. EAバックテストの可視化

ビジュアライゼーションモードでも未来の予測ラインが表示されるため、EAが「どの時間のラインを認識しているか」を視覚的に確認しながらデバッグできます。


注意事項

サマータイムについて

このインジケーターは単純な時間オフセットを使用しています。 サマータイム期間中のブローカーでは、1時間のズレが発生する場合があります。 ServerGMTOffset を適切に設定してください。

パフォーマンス

過去100本+未来N本のグリッド線を描画します。 FutureLinesを極端に大きくするとパフォーマンスに影響する可能性があります。


ソースコードのダウンロード

この記事で紹介したインジケータをダウンロードできます。

ファイルの種類:インジケータ

保存先: MQL5/Indicators/ フォルダ
使い方: MT5のナビゲーターから「インディケータ」を展開し、チャートにドラッグ&ドロップで適用

03_JPN_Time_SubZero_v1.40.mq5 をダウンロード


関連記事・用語


MQL移植シリーズ一覧に戻る