テクニカルEA化

時間帯フィルターをEAに入れるときの落とし穴

「東京時間だけ」「ロンドン時間だけ」——時間帯フィルターはEA設計でよく使う手法だ。

しかし見落としやすい落とし穴があり、安易に入れると逆に性能を悪化させることがある。

結論

主な落とし穴は3つ。

  1. サーバー時間とローカル時間のズレ: MT5のサーバー時間はGMT+2/+3の業者が多い。日本時間のつもりで設定するとズレる。
  2. サマータイムの切り替え: 米・欧のサマータイム切替日に時間がズレる。年に複数回、無視できない。
  3. 過剰最適化: 「この時間帯だけPFが高い」は過去データに合わせた結果であり、将来も有効とは限らない。

なぜEA運用で重要か

時間帯フィルターは「不利な時間を避ける」目的では有用。早朝のスプレッド拡大や流動性の低い時間を避けるのは合理的。

しかし「特定の時間帯だけで回す」設計にすると取引回数が大きく減り、統計的信頼性が下がる。市場の時間帯特性は年単位で変わりうる。

仕組み・条件

MT5のサーバー時間

多くの業者がGMT+2(冬)/ GMT+3(夏)。日本時間(GMT+9)との換算:

MQL5での実装(GMT基準がズレに強い)

// サマータイムのズレを避けるため TimeGMT() を基準にする
datetime gmt_time = TimeGMT();
MqlDateTime g;
TimeToStruct(gmt_time, g);
int gmt_hour = g.hour;

// ロンドン時間8:00〜17:00(GMT)でフィルター
bool is_london_session = (gmt_hour >= 8 && gmt_hour < 17);

サマータイム

イベント時期(2026年の例)影響
米サマータイム開始3月第2日曜NY時間が1時間前倒し
米サマータイム終了11月第1日曜NY時間が1時間後ろ倒し
欧サマータイム開始3月最終日曜ロンドン時間が1時間前倒し
欧サマータイム終了10月最終日曜ロンドン時間が1時間後ろ倒し

米と欧で切替日が異なるため、その期間はオーバーラップ時間が変わる。

バックテストやリアル運用で壊れるポイント

どう確認するか

  1. サーバー時間のGMTオフセットを確認する(TimeCurrent()TimeGMT() の差)
  2. フィルターは TimeGMT() 基準にし、サーバー時間に依存させない
  3. サマータイム切替月(3月・10月・11月)前後で結果を確認する
  4. フィルターあり/なしで取引回数とPFの両方を比較する
  5. フィルター後の取引が月50回未満なら統計的信頼性に注意する

自分の検証スタンス

時間帯フィルターは「不利な時間を避ける」目的に限定して使う。「有利な時間だけを狙う」使い方は過剰最適化のリスクが高い。

具体的には早朝のスプレッド拡大時間を避けるフィルターを基本にし、「どの時間が一番利益につながるか」の最適化はしない。

参照した公式情報

免責

本記事は個人の検証メモであり、投資助言ではありません。時間帯フィルターの効果は市場環境の変化により変動する可能性があります。サーバー時間の設定は業者によって異なるため、利用する業者の仕様を確認してください。