MT5のEAにおける「ディバージェンス」とは
直接の答え
MT5では、エキスパートアドバイザー(EA)の「ディバージェンス(divergence)」とは、EAの挙動や結果が、以前のテストや別の実行から想定していた内容と一致しなくなることを意味します。この不一致は、取引判断の違い、タイミングの違い、注文結果の違い、あるいはEAが異なる内部状態に到達する、といった形で現れます。「ディバージェンス」は単一の指標でも、確実な警告でもありません。実行同士、または前提と実際に起きたことの間で意見が食い違っていることを表す説明です。
メカニズムと定義(ディバージェンスが生まれる仕組み)
EAは、入力と内部ルールから判断を行うプログラムです。同じコードを持つ2つのEAでも、コードに供給される環境が同一でない場合、ディバージェンスは始まります。よくある原因は次のとおりです。
- 市場入力の違い:EAは、始値・高値・安値・終値、またはティックのタイミングなどの価格系列から値を計算することがあります。取得されたデータが異なれば、EAが計算するシグナルも変わり得ます。
- 執行の詳細の違い:注文の出し方は、注文がどのように処理されるかに依存します。約定の小さな違い、タイミングの違い、コストの違いがポジションに影響し、その後の判断が変わることがあります。
- 内部状態の違い:多くのEAは、既存ポジション、ストップ/リミットの配置、または「この条件はすでに満たされたか?」といったフラグなどの変数を追跡します。どこかの時点で状態が一度でも異なれば、その後の挙動もさらに分岐していきます。
- テストとライブ稼働での前提の違い:バックテストとライブ運用では、タイミング、スプレッド、スリッページ、イベントの順序付けに同じモデルが使われない場合があります。
役立つイメージとしては、ディバージェンスはしばしば連鎖反応です。入力や執行の小さな違いがEAを新しい状態へ押し込み、その新しい状態に対して残りのロジックが適用されるため、後になって差が大きくなっていきます。
証拠または例(何を見るべきか)
たとえば、同じEAを似た時間帯に対して2回実行するとします。
- 実行Aでは、ある条件が特定の時点で成立し、EAがポジションに入ります。
- 実行Bでは、計算された入力が異なるため(たとえば、EAが使う価格履歴が同一ではないため)、条件が成立するのが遅れる、または成立しないことがあります。
この時点以降、開いているポジションの集合、リスク計算、そして注文管理ロジックが異なるため、EAのその後の行動も変わり得ます。
もう一つのパターンはルール確認ドリフトです。EAはバックテストでは「自分のルールに従っている」ように見えるかもしれませんが、入力がわずかに違う形で再実行すると(異なるローソク足の境界、異なるティックの取得、異なる執行タイミングなど)、同じルールが発火しない可能性があります。その後、まだ一致している部分だけをつまみ食いすると、根本的な不一致が残っているにもかかわらず、見かけ上の整合性が増してしまうことがあります。
制限とリスク(ディバージェンスが教えてくれないこと)
ディバージェンスは有益ですが、それが自動的にEAが「間違っている」ことや、失敗することを意味するわけではありません。主な制限は次のとおりです。
- 方向性の保証はない:ディバージェンスは、結果が良くなる場合にも悪くなる場合にも起こり得ます。
- 後知恵バイアス:結果を観察した後、人はその結果に合う説明に注目しがちです。たとえば、小さな入力の違いでも不一致を説明できるのに、「正しいロジックによる一致」だとみなしてしまうことがあります。
- 市場および口座条件の変動:EAはスプレッド、コミッション、執行タイミング、口座状態に依存します。コードを制御できていても、これらの要因はなお異なり得ます。
- テスト手法の違い:バックテストでは単純化した前提が使われることがあります。その前提が実際のイベントの順序と一致しない場合、テストと実運用の挙動の間でディバージェンスが生じることが期待されます。
典型的な重大な失敗モードとしては、状態の不一致(EAが実際には存在しないポジションを管理していると考えている)や、イベント順序への感度(更新の正確なタイミングに依存するロジック)があります。これらは、時間とともに拡大していくディバージェンスを生み得ます。
検証と次の質問(独立して確認する方法)
あなたのケースで「ディバージェンス」が何を意味するのかを検証するには、結果を後から判断するのではなく、変数を制御することに注目してください。
- EAが各実行で使った入力を比較する(同じシンボル、同じ時間足、同じ履歴データソース、同じセッションのタイミング)。
- イベント順序に影響する環境差を確認する(データフィード、ティック頻度、注文処理の違い)。
- 実行同士が最初に一致しなくなった時点での内部状態の変化を調べる(たとえば、条件が初めて異なる形で発火したとき)。
- 変更は1つずつ行って再実行し、ディバージェンスを特定の要因に帰属できるようにする。
DOCUMENT END