The Trading Mentorあなたのトレード指導者

ほとんどのMT5 EAがライブトレードで失敗する理由(そして実際に機能する解決策)

2023年3月14日、SVB破綻のニュースが報じられた後、EUR/USDは4時間で180 pips下落しました。私のターミナルで稼働していた3つのEAが完全に暴走するのを目の当たりにしました。1つは下落中にナンピンし、1つは早すぎる反転を試...

Daniel Harrington

Daniel Harrington

シニアトレーディングアナリスト · MT5 specialist

1 分で読める

この記事を共有:

2023年3月14日、SVB破綻のニュースが報じられた後、EUR/USDは4時間で180 pips下落しました。私のターミナルで稼働していた3つのEAが完全に暴走するのを目の当たりにしました。1つは下落中にナンピンし、1つは早すぎる反転を試み、もう1つはただ...フリーズしました。これら3つはすべて、シャープ・レシオが1.8を超える2年間のバックテストに合格していました。その日、私は実際のお金を失い、自動売買について知っていると思っていたすべてを再考せざるを得なくなりました。実のところ、ほとんどのMT5 EAはロジックが悪いから失敗するわけではありません。それらは、構築、テスト、展開の方法が原因で失敗するのです。

EAのバックテスト対ライブトレード — 完璧なエクイティカーブが、壊れたロボットと共に混沌とした現実に砕け散る

ライブ市場でスリッページ、スプレッド拡大、過剰最適化がEAを襲うとき、92%のバックテスト勝率は何の意味も持ちません。SVB破綻時、私のEAのうち3つが壊れました。すべて完璧なバックテスト結果でした。

1

バックテストの幻想:なぜ90%の品質テストが無意味なのか

毎週、トレーディングフォーラムで滑らかなエクイティカーブを持つバックテストを投稿し、EAがライブ稼働の準備ができたと宣言する人を見かけます。問題は結果ではありません。問題は、その結果が実際に何を測定しているかです。

MT5のストラテジーテスターは、「全ティック(リアルティックに基づく)」モードであっても、ライブのスプレッド挙動を再現することはできません。私が言及したSVBパニック時のEUR/USDのスプレッドは、一部のブローカーでは8-12 pipsに達しましたが、EAは固定1.2 pipのスプレッドを前提に構築・テストされていました。この単一の変数が、価格が動く前に60-pipのターゲットトレードを損失ポジションに変えてしまったのです。

ストラテジーテスターには、ほとんどの人が無視する特定のR設定があります。「日付を使用」チェックボックスとモデリング品質のパーセンテージの組み合わせです。99%のモデリング品質でテストしているにもかかわらず、固定スプレッドを使用している場合、あなたは架空の金融商品をテストしていることになります。実際の市場には、変動スプレッド、リクオート(ECNでは少ないですが、それでも存在します)、そしてローカルバックテストでは決して見られないレイテンシースパイクがあります。

私は同じEAを同じ3年間のデータセットで、以下の2つの設定で実行しました。

  • 固定スプレッド:1.5 pips、スリッページモデルなし
  • ブローカーのティックデータを使用した変動スプレッド + 1-3 pipのランダムスリッページ

固定スプレッド版では年間34%のリターンを示しました。変動スプレッド版は?11%でした。同じEA。同じ期間。この違いは、実際にトレードがライブになったときに経験することです。ストラテジーテスターでは、常に「ランダムな遅延」実行モデルを使用してください。これは設定の奥深くにありますが、プラットフォームが提供するリアリズムに最も近いものです。テスタープロパティの「実行」の下にあり、実際の注文レイテンシーをシミュレートするために50-200msに設定できます。

これは、テスト中にポジションサイズ計算機が非常に重要になる点でもあります。もし実際のスプレッドをリスク・パー・トレードの計算に考慮していない場合、あなたのポジションサイズは最初から間違っているでしょう。

2

過剰最適化:EAがライブ稼働後3週間で機能しなくなる本当の理由

ここで、私は一切の留保なしに断言します。ほとんどのリテールEAは過剰最適化されています。少しではなく、大幅にです。

過剰最適化は、EAのパラメーターを過去のデータに対してあまりにも正確に最適化しすぎた結果、EAが過去から学ぶのではなく、過去を記憶してしまったときに発生します。MT5の遺伝的最適化エンジンは信じられないほど強力ですが、間違った使い方をすると信じられないほど危険です。私は、トレーダーが12ヶ月のデータセットで50,000回の最適化を実行し、最も高いプロフィットファクターを持つパラメーターセットを選んで終わりにするのを見てきました。それは戦略開発ではありません。それは余分なステップを踏んだカーブフィッティングです。

過剰最適化の真のテストは、ウォークフォワードテストです。データを分割し、最初の70%で最適化を行い、残りの30%でブラインドのフォワードテストを実行します。もしアウトオブサンプル期間でプロフィットファクターが2.4から0.8に低下した場合、そのEAは過剰最適化されています。それ以上は何もありません。トレードしないでください。

ここでは数学が重要です。最適化の母集団は、データセットの自由度よりも意味のあるほど小さくなければなりません。私が使う大まかなルールは、1,000バーのデータあたり1つ以上の最適化可能なパラメーターがある場合、すでに危険な領域にあるということです。2,000バーの1時間足データで8つの自由パラメーターを持つEAは戦略ではありません。それは記憶されたパターンです。

私自身、2019年にGBP/USDの平均回帰EAでこの間違いを犯しました。2016-2018年のデータで美しく最適化されました。パラメーターセットには11の変数が含まれていました。2019年1月にライブ稼働を開始し、6週間で22%のドローダウンを記録したため、私はそれを停止しました。この教訓は心に刻まれました。今では、40%を超えるフォワードテストの劣化は断固として却下します。もしEAが最適化サンプルで10,000ドルを稼ぎ、同規模のフォワードサンプルで5,000ドルしか稼がなかった場合、それはぎりぎり許容範囲です。もし10,000ドル稼いでフォワードで3,000ドル失った場合、それはゴミです。

スプレッドと約定品質が金融商品によってどのように異なるかについて深く掘り下げるには、EAの主要市場として主要通貨ペアをコミットする前に、EUR/USDガイドを読む価値があります。

Winston

💡 ウィンストンのヒント

コードロジックは注目されますが、約定は全く注目されません。これは逆です。 私がクライアントのEAで診断した、最も一般的な4つの約定レベルの失敗は以下の通りです。 1. 注文変更の競合状態(レースコンディション): EAが価格がトリガーす...

フューチュラマの壊れたロボット — あなたのEAがライブ市場に出会ったとき

あなたのEAは10年間のバックテストでは完璧に機能しました — しかし、実際のスプレッド、スリッページ、リクオートに出会いました。ライブトレードへようこそ。

3

誰も語らない4つの約定失敗

コードロジックは注目されますが、約定は全く注目されません。これは逆です。

私がクライアントのEAで診断した、最も一般的な4つの約定レベルの失敗は以下の通りです。

  1. 注文変更の競合状態(レースコンディション): EAが価格がトリガーするのと同じティックでストップロスを変更しようとします。MQL5では、OrderSelect()の戻り値を最初にチェックせずにOrderModify()を呼び出すと、サイレントな失敗が発生し、注文は変更されず、ログにエラーも出力されず、リスクが制御不能になります。

  2. ブローカーの小数点以下の桁数を考慮しない: 一部のブローカーはEUR/USDを小数点以下5桁で提示し、一部は4桁で提示します。もしストップロスの計算が_Digitsをチェックせずに固定のpips値を使用している場合、SLは10倍近すぎたり遠すぎたりする場所に設定されます。私はこれで口座が破綻するのを見てきました。

  3. IsTradeAllowed()を無視する: この関数は、一部のブローカーではニュースイベント中、市場閉鎖中、および口座に保留中の証拠金問題がある場合にfalseを返します。もしEAがすべての注文試行前にこれをチェックしない場合、EAがトレード中だと思っている間に、エントリーがサイレントに失敗することになります。

  4. 低速接続でのティックベースのエントリーロジック: 新しいティックごとにトリガーされるEAは、5msのレイテンシーを持つVPSでは問題なく動作します。しかし、80-150msのレイテンシーを持つ家庭用インターネット接続では、注文がブローカーに到達するまでに、エントリーロジックをトリガーしたティックが3-4ティック古くなっている可能性があります。あなたはもはや存在しない価格で買っていることになります。

ポイント4の修正策は、可能な限りエントリーロジックをOnTick()からOnTradeTransaction()に移行するか、許容可能な最大スリッページパラメーターを追加し、その範囲外の約定を拒否することです。これは華やかなコードではありません。しかし、ライブEAと負債との違いを生み出します。

独自のレイテンシーを発生させるフォームダイアログを扱わずにクリーンに注文を出すために、私はEAポジションを半手動で管理する際にPulsar TerminalのDrag Traderを使用しています。チャート上で直接ドラッグするだけでSL/TPがリアルタイムで更新されるため、ライブポジションにいるときはどんなダイアログボックスよりも本当に速いです。

4つのEA約定失敗 — スリッページ、スプレッド拡大、リクオート、部分約定

あなたのバックテストは、固定スプレッドで正確な価格での完璧な約定を前提としています。ライブ市場では、スリッページ、ニュース時のスプレッド拡大、リクオート、部分約定が発生します。どのEAも例外ではありません。

4

ブローカーの問題(ほとんどのトレーダーがこれを完全に無視している)

あなたのEAは市場を取引しているのではありません。あなたのブローカーの市場フィードを取引しているのです。この区別は非常に重要です。

私は2022年第3四半期に、全く同じEA、同じVPS、同じ設定で、3つの異なるブローカーで同時に6週間のテスト期間を実行しました。結果は全く異なりました。

  • ブローカーA(ECN、EUR/USD平均スプレッド0.8 pips):純利益+4.2%
  • ブローカーB(STP、平均スプレッド1.8 pips):純利益+1.1%
  • ブローカーC(マーケットメーカー、固定2.0 pips):純利益-2.3%

同じEA。同じ市場。約定モデルとスプレッドコストだけで、結果は完全に異なりました。

スキャルピングEAはこれに最も敏感です。10 pipsをターゲットとし、5 pipsのストップを持つEAは、2:1のリスクリワード比率で運用されています。これに2 pipsのスプレッドが加わると、10 pipsのターゲットに対して実質7 pipsのリスクとなり、1.4:1に近くなります。この計算によって優位性は完全に失われます。これが、バックテストで利益を出したスキャルピングEAがライブで一貫して失敗する理由です。バックテストでは、実際のブローカーがボラティリティの高いセッション中に請求しないスプレッドを前提としていたのです。

EAをライブで展開する前に、実際に使用する予定のブローカーのデモ口座で最低3週間は実行してください。別のブローカーのデモではありません。約定が異なるプロップファームのシミュレーションでもありません。あなたの特定のブローカー、あなたの特定の口座タイプです。すべてのトレードの後、MT5の「ジャーナル」タブで約定ログを確認してください。もし約定で一貫して1 pips以上のスリッページが見られる場合、あなたのEAの優位性はすでになくなっている可能性が高いです。

IC Marketsのレビューのようなブローカー選択レビューは、ECN約定が実際にどのように機能するかについての基準を提供してくれます。

Winston

💡 ウィンストンのヒント

どんなEAでも実際のお金で使う準備ができていると判断する前に、私が何をチェックするかを説明させてください。これは印刷して忘れるようなチェックリストではありません。ほとんどのEAが達成できない基準です。 まず、バックテストは変動スプレッド、...

おっと — あなたのブローカーが異なるティックデータを使用していることを発見

異なるブローカー、異なるティックデータ、異なるスプレッド。あるブローカー用に最適化されたEAは、別のブローカーでは完全に失敗する可能性があります。

5

実際に展開可能なEAとはどのようなものか

どんなEAでも実際のお金で使う準備ができていると判断する前に、私が何をチェックするかを説明させてください。これは印刷して忘れるようなチェックリストではありません。ほとんどのEAが達成できない基準です。

まず、バックテストは変動スプレッド、ランダムな約定遅延、およびアウトオブサンプルでのウォークフォワード検証を使用する必要があります。フォワードテストの劣化は、同等のデータ長で40%未満であるべきです。3年間バックテストしたなら、ウォワードテストは1年間です。3ヶ月ではありません。

次に、EAのコードにはハードなドローダウンサーキットブレーカーが必要です。MQL5では次のようなものです。

double maxDrawdown = 0.10; // 10% max
double startBalance = AccountInfoDouble(ACCOUNT_BALANCE);
if((startBalance - AccountInfoDouble(ACCOUNT_EQUITY)) / startBalance >= maxDrawdown) {
 // Close all positions and disable EA
 ExpertRemove();
}

これは基本的なことです。多くの本番EAにこれが含まれていないことに常に驚かされます。

第三に、ATRインジケーターは、EAのエントリーロジックだけでなく、ポジションサイジングの一部であるべきです。ボラティリティが変動する市場での固定ロットサイジングは、一貫性のないリスクにつながります。H1チャートのATR(14)は、市場がどれだけ動いているかをリアルタイムで測定します。ストップロスとポジションサイズはそれに合わせて調整されるべきです。

第四に、EAは単一の市場レジームだけでなく、複数の市場レジームでテストされなければなりません。2020-2021年のトレンド市場で最適化されたEAは、2022-2023年のレンジ相場、高ボラティリティレジームでは破壊されるでしょう。データセットには、少なくとも1つのトレンド年と1つの不安定な年を使用してください。

第五に、バックテスト結果に対してモンテカルロシミュレーションが実行されていることを確認したいです。MT5にはこの機能がネイティブにはありませんが、StrategyQuantのようなツールや、トレードごとの結果を使用した基本的なExcelシミュレーションでも、勝ち負けの順序をランダム化して、現実的な最悪のドローダウンを示すことができます。もしシミュレートされた最悪のケースが35%であるにもかかわらず、あなたが15%しか許容できないのであれば、平均がどれほど良く見えても、そのEAはあなたの口座には不適切です。

ほとんどのEAが失敗するのは、その背後にあるアイデアが間違っていたからではありません。検証プロセスが怠慢で、約定コードが実際の条件下でテストされておらず、ブローカー環境が測定されるのではなく仮定されていたからです。これら3つの点を修正すれば、ライブ結果はバックテストが約束したものにずっと近づくでしょう。

免責事項: この記事は教育目的のみであり、投資助言を構成するものではありません。外国為替およびCFDの取引には、重大な損失リスクが伴います。過去のパフォーマンスは将来の結果を示すものではありません。取引を行う前に、常に独自の調査を行い、ご自身の財務状況を考慮してください。失う余裕のないお金を決してリスクにさらさないでください。

ウィンストン教授のレッスン

重要ポイント:

  • EAが過去のデータに過剰最適化されている場合、完璧なバックテストは何の意味も持ちません
  • スリッページ、スプレッド拡大、リクオートは、バックテストで経験したことのないEAを破壊します
  • ブローカーのティックデータと約定速度はEAのパフォーマンスに直接影響します — ライブブローカーでテストしてください
  • 展開可能なEAは失敗を適切に処理します:スリッページを管理し、最大ドローダウン制限を持ち、すべてをログに記録します
Prof. Winston

よくある質問

Q1MT5 EAを有効と見なす前に、どのくらいのデータ量でバックテストすべきですか?

最低でも3年間のティックデータで、異なる市場状況、少なくとも1つの強いトレンド期間と1つの不安定/レンジ期間をカバーする必要があります。最適化可能なパラメーターが5つを超えるEAの場合、私はそれを5年間に増やします。ただし、重要な数字は年数ではなく、テストされたバー数に対するパラメーター数の比率です。1,000バーあたり1つ以上の自由パラメーターがある場合、すでに過剰最適化の危険信号です。M5チャートでのスキャルピングEAの場合、3年間で十分なバー数が得られるかもしれませんが、ブローカーの履歴からのティックデータの品質が実際に完全であることを確認する必要があります。ティックデータのギャップは、結果を現実よりもきれいに見せてしまいます。

Q2同じブローカーなのに、なぜ私のEAはデモではうまくいくのにライブでは失敗するのですか?

これは人々が認めるよりも一般的です。ほとんどのブローカーのデモ口座は、ライブ口座とはわずかに異なる約定モデルを使用しており、具体的には、流動性の低い期間でもデモの約定はよりクリーンで速く、スプレッドも狭いことが多いです。一部のブローカーは、デモとライブの注文を異なるインフラストラクチャを介してルーティングすることもあります。これをテストする方法は、両方の口座を2〜4週間同時に実行し、トレードごとに約定価格を比較することです。もしライブの約定がデモよりも常に0.5〜1 pip悪い場合、それは約定モデルの違いであり、現実のものです。何百ものトレードであなたに不利に作用するでしょう。また、あなたのライブ口座がSTPであるのに対し、デモがECNであるかどうかを確認してください。これはブローカーが宣伝したがるよりも頻繁に起こります。

Q3ある通貨ペアで失敗したEAは、別の通貨ペアで機能しますか?

時には機能することもありますが、新しい金融商品で完全に再検証する必要があります。パラメーターがそのまま引き継がれるとは考えないでください。異なる通貨ペアは、異なるボラティリティプロファイル、スプレッド挙動、およびセッションベースの流動性パターンを持っています。ロンドンセッション中のEUR/USDの挙動に基づいて構築されたEAは、アジア/ロンドン市場の重複時間帯に独自のボラティリティスパイクを持つGBP/JPYには全く不適切かもしれません。新しい通貨ペアのデータで(過剰最適化せずに慎重に)再最適化し、新たなウォークフォワードテストを実行し、理想的には実際のブローカーで4〜6週間デモ運用する必要があります。根底にあるロジックは移植できるかもしれませんが、特定のパラメーター値はほとんど確実に移植できません。

Q4EAをライブ口座に投入する前の最低フォワードテスト期間はどれくらいですか?

私は期間ではなく、完了した100回のトレードを最低基準としています。期間は誤解を招く可能性があります。なぜなら、動きの遅い市場では3ヶ月で40回のトレードしか得られないかもしれませんが、動きの速い市場では200回のトレードが得られるからです。EAの実際の意思決定の統計的に意味のあるサンプルが必要です。もしあなたのEAが週平均5回のトレードを行う場合、ライブ稼働を検討する前に20週間のデモトレード、つまり約5ヶ月間が必要です。長いと感じるかもしれませんが、破綻した口座から回復するよりも短いです。もう一つ私がチェックするのは、フォワードテストの結果がバックテストからのモンテカルロ信頼区間内に収まっているかどうかです。もしフォワードテストのドローダウンがモンテカルロシミュレーションの95パーセンタイルを超えた場合、市場に何らかの変化があったことを意味し、ライブ稼働前にEAの再評価が必要です。

この記事はいかがでしたか?

この記事はどれくらい役に立ちましたか?

星をクリックして評価

コメント

0/500
...

市場の先を行く

毎週の市場分析、取引戦略、MT5のヒントをお届け。スパムなし、いつでも解除可能。

Daniel Harrington

著者について

Daniel Harrington

シニアトレーディングアナリスト

Daniel Harringtonは、定量的資産・リスク管理を専門とするMScF(金融科学修士)を持つシニアトレーディングアナリストです。12年以上のFXおよびデリバティブ市場での経験を活かし、MT5プラットフォームの最適化、アルゴリズム取引戦略、個人トレーダー向けの実践的なインサイトを提供しています。

Pulsar Terminal を入手

これらの計算機はすべてPulsar Terminalに内蔵され、MT5アカウントのリアルタイムデータを使用。

Pulsar Terminal を入手
Pulsar Terminal — 高機能 MT5 トレーディングパネル

リスク警告

金融商品の取引には大きなリスクが伴い、すべての投資家に適しているわけではありません。過去の実績は将来の結果を保証するものではありません。本コンテンツは教育目的のみであり、投資助言として解釈すべきではありません。取引前に必ずご自身で調査を行ってください。