失敗ログ

リペイントするインジケーター(ZigZag等)をEAのシグナルに使う時の回避策

チャート上に過去に遡って矢印やラインを描き直す(リペイントする)インジケーターをEAのエントリーシグナルとしてそのまま組み込むと、「過去のチャート(バックテスト)では完璧に見えるのに、リアルタイム(フォワード)では全く機能しない(ダマシの嵐になる)」という最悪の結果を招きます。 これを回避するには、MQL5のプログラム上で「現在の確定していない足(Shift

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

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

Category 失敗ログ

EA testing

リペイントするインジケーター(ZigZag等)をEAのシグナルに使う時の回避策

結論

チャート上に過去に遡って矢印やラインを描き直す(リペイントする)インジケーターをEAのエントリーシグナルとしてそのまま組み込むと、**「過去のチャート(バックテスト)では完璧に見えるのに、リアルタイム(フォワード)では全く機能しない(ダマシの嵐になる)」**という最悪の結果を招きます。 これを回避するには、MQL5のプログラム上で「現在の確定していない足(Shift=0)のデータを読まない」こと、あるいは「リペイントが確定した過去の足(Shift=1や2以降)のシグナルだけをトリガーにする」という厳格なコーディング(遅延処理)が推奨です。

なぜEA運用で重要か

システムトレードの初心者が最も騙されやすいのが「高勝率を謳うカスタムインジケーター」です。 代表的なのが「ZigZag(ジグザグ)」や「Solar Wind」といったインジケーターです。これらは「未来の価格データ」を見てから過去の頂点を都合よく引き直しているため、完成したチャート上では「常に大底で買いサイン、天井で売りサインが出ている魔法のツール」に見えます。しかし、リアルタイムではサインが出たり消えたりを繰り返しており、EAはその「幻のサイン」に飛びついて何度も往復ビンタを食らいます。

仕組み・条件

リペイントの仕組み(ZigZagの例):

  1. 現在価格が下落し、とりあえず「谷」と判定して買いサインを描画する。
  2. その後、さらに価格が下落(底抜け)する。
  3. インジケーターは「さっきのサインは間違いだった」として過去の買いサインを消し、さらに低い位置に新しい買いサインを描き直す。

EAは描画された瞬間の「1回目のサイン(間違い)」で実際にエントリー注文を出してしまうため、インジケーターがサインを消しても、持たされた含み損のポジションは消えません。

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

どう確認するか

気になるインジケーターがあれば、MT5のストラテジーテスターでそのインジケーターのみを表示させ、**「ビジュアルモード」**で過去検証を回してください。(速度を遅くして再生します) 一度表示された矢印(サイン)が、その後の価格変動によってスッと消えたり、位置が移動したりした場合、それは「リペイントするインジケーター」です。これをEAのシグナルに使うことは極めて危険です。

自分の検証スタンス

私はEAを開発する際、エントリー判定には基本的に「すでに確定した過去のローソク足(Shift=1)」のデータしか使用しません。 「形成途中の足(Shift=0)」のデータは常に幻であり、確定するまでは信用に足らないからです。どうしてもリアルタイムの反応(ブレイクアウトの瞬間など)を取りたい場合は、リペイントの概念が存在しない現在価格(Bid/Ask)の単純比較や、移動平均線などの非リペイント系指標との組み合わせのみに限定しています。

関連して読む

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

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

参照した公式情報

免責

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