コンテンツにスキップ

【移植#57】MODE_STOPLEVELを書き換えない — MT5の停止距離を読み、条件だけを比較する

MT5のEURUSD H1チャートに停止距離の実値と仮想値を表示し、注文を送らずに監査する画面

この記事の3行まとめ

  • 旧MT4のMODE_STOPLEVELを業者ファイルへ書き戻す方法はMT5移植の対象にしない
  • SYMBOL_TRADE_STOPS_LEVELSYMBOL_TRADE_FREEZE_LEVELを読み、仮想値との判定差を表示する
  • 注文は一切送らず、実運用の制約を消した結果と混同しない監査画面にする

元記事が解こうとした問題

原典は、バックテスト時のMODE_STOPLEVELを0へ変更し、指値距離の制約を緩めたり、逆に厳しくしたりする試みでした。狙いは、手法のエッジを制約の違いごとに確認することです。一方で原典自身も、変更した成績はEAのリアル運用では実現できないと注意しています。

MT5では「書き換え」ではなく「監査」にする

MT5では銘柄の取引条件をSYMBOL_TRADE_STOPS_LEVELで読み取れます。凍結距離はSYMBOL_TRADE_FREEZE_LEVELです。これらはサーバー側の条件であり、端末インジケータから都合よく変更する値ではありません。

そこで今回のインジケータは、次の二つを同時に表示します。

  • ブローカーから読んだ停止距離・凍結距離
  • InpSimulatedStopsPointsで指定した仮想停止距離に対する、テスト距離の合否

実値に対する判定と仮想値に対する判定が異なる場合、そこがストレス条件による差です。値を変更したバックテスト結果ではなく、どの距離条件なら注文条件を満たすかを先に確認できます。

57_Stop_Distance_Stress_Auditor_v1_00.mq5 をダウンロード

使い方と限界

チャートへ適用し、InpTestDistancePointsを検査したい距離へ設定します。InpSimulatedStopsPointsを変えると、仮想条件での判定だけが変わります。インジケータは注文を送らないため、実際の拒否コードや約定品質を再現するものではありません。

また、銘柄や口座、サーバー条件によって実値は変わります。実値を0に固定して得たテスト結果を、そのままライブ運用の期待値に読み替えないでください。必要ならEA側で発注前に現在値を再読し、距離不足なら送信せずログへ残します。

検証結果

専用MT5(Build 6061、EURUSD・H1)でインジケータと独立capture EAをコンパイルし、エラー0・警告0でした。画面キャプチャはcaptured=true、画像エラー0で取得でき、注文・ポジション操作はありません。

まとめ

停止距離を消すことは、制約を理解することとは別です。MT5ではサーバーが提示する値を読み、仮想条件との差を監査する方が、再現可能で安全です。条件を緩めた結果を「実現可能な性能」と誤認しないためにも、実値とシミュレーション値を画面上で分離して扱います。


前後の記事

前: 【移植#56】アクティブタブを断定しない — MT5標準イベントで最後の操作チャートを追跡

次: 【移植#58】QQE-VTをMT5へ — RSI平滑線とクロスをサブウィンドウで確認する

— SPONSORED —