失敗ログ

MQL5で「金曜日の週末強制クローズ処理」を実装する際に陥る、サーバータイムゾーンの罠

週末の窓開け(月曜日の価格ワープ)による大損を防ぐため、EAに「金曜日の深夜に全ポジションを強制決済する(金曜クローズ)」ロジックを実装するのは非常に有効なリスク管理です。 しかし、これをMQL5でプログラミングする際、「自分のパソコンの時間(ローカルタイム)」や「日本時間(JST)」を基準にしてコードを書いてしまうと、夏時間(DST)と冬時間の切り替え時や

Read this for 壊れた条件を、次の検証に使う。

失敗ログは反省文ではなく、過剰最適化や運用停止の条件を先に見つけるための材料です。

Category 失敗ログ

EA testing

MQL5で「金曜日の週末強制クローズ処理」を実装する際に陥る、サーバータイムゾーンの罠

結論

週末の窓開け(月曜日の価格ワープ)による大損を防ぐため、EAに「金曜日の深夜に全ポジションを強制決済する(金曜クローズ)」ロジックを実装するのは非常に有効なリスク管理です。 しかし、これをMQL5でプログラミングする際、「自分のパソコンの時間(ローカルタイム)」や「日本時間(JST)」を基準にしてコードを書いてしまうと、夏時間(DST)と冬時間の切り替え時や、ブローカーのサーバー時間の違いによって時間がズレてしまい、決済されるべき時間に機能しなくなるという致命的なバグ(罠)が発生します。必ず「MT5のサーバー時間」を基準にした相対的なコードを書く必要があります。

なぜEA運用で重要か

週末に重大なニュース(戦争の勃発、突発的な選挙結果など)が発生すると、月曜日の朝に為替市場が開いた瞬間、金曜日の終値から100pips以上離れた場所で価格がスタートする「窓開け」が起こります。 この窓開けは「設定していたストップロス(SL)を完全に飛び越えて最悪の価格で約定する」ため、口座を一瞬でゼロカットさせる破壊力を持っています。このリスクを完全に排除するための「週末強制クローズ機能」は、EAをリスクを抑えたに長期運用するための推奨の防御壁です。

仕組み・条件

タイムゾーンの罠を回避する、MQL5の正しい金曜クローズの基本実装:

  1. 時間の取得は、PCの時間(TimeLocal())ではなく、必ずブローカーのサーバー時間である TimeCurrent() を使用します。
  2. ほとんどの海外FX業者は「GMT+2(夏時間はGMT+3)」を採用しており、金曜日の取引終了時刻は「サーバー時間の23時59分(日々のロールオーバー時刻)」です。
// サーバー時間の「曜日」と「時間」を取得する構造体
MqlDateTime current_time;
TimeToStruct(TimeCurrent(), current_time);

// 金曜日(DayOfWeek==5) の サーバー時間23時00分 以降になったら
if(current_time.day_of_week == 5 && current_time.hour >= 23)
{
    // ここで全ポジションを強制決済する関数(CloseAll)を呼び出す
    // 同時に、新規エントリーを禁止するフラグを立てる
}

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

どう確認するか

週末クローズ機能付きのEAをバックテストする際は、ビジュアルモードで動かし、チャート下部の「日時」が金曜日の設定時刻になった瞬間に、持っているポジションが強制的に(SLやTPに関係なく)決済されているかを確認します。 さらに、数年間分のバックテストを回し、春(3月)と秋(11月)のサマータイム切り替えの時期においても、意図したタイミングで決済が行われているか、ジャーナルログのエラーをチェックしてください。

自分の検証スタンス

私は自作EAにおいて、金曜クローズの時間を「入力パラメータ」としてユーザーが自由に設定できるように設計しています。 また、ブローカーによってサーバー時間がGMT+2ではない(例えば日本時間GMT+9の国内業者など)場合でも動くように、MT5の SymbolInfoSessionTrade() 関数を用いて「そのシンボルの実際の取引終了時刻」を動的に取得し、その「終了〇分前」に決済を走らせるという、より汎用的で堅牢なコードを好んで使用します。

関連して読む

Failure log 壊れた条件を、次の検証に使う。

失敗ログは反省文ではなく、過剰最適化や運用停止の条件を先に見つけるための材料です。

参照した公式情報

免責

本記事は個人の検証メモであり、投資助言ではありません。バックテスト結果は将来の成績を保証しません。海外FXや自動売買には、法規制・レバレッジ・スプレッド拡大・約定遅延・スリッページなどのリスクがあります。条件は変わるため、最新情報は各公式ページで確認してください。