【有料EA解剖】デイトレEA リバース_AUDCAD-M5

こんにちは、のなかまです。

今回は、デイトレのEAを解剖していきます。

通貨ペアは豪ドルとカナダドル。時間足はM5です。

気になったところから読んでもらって大丈夫です。

EAをバックテスト

まずは、EAをバックテストします。

デイトレなので短期決戦では成果が見えづらく、過去5年分でバックテストしてみました。

バックテストの結果がこちらです。

5年間でしっかりと利益を残すことができています。

2020/12/1~2025/12/1の5年間で、きっちりと右肩上がりのグラフになっています。

条件を割り出す時に大事なこと

条件を割り出す時に大事なのは、

一個だけじゃなくて、2個3個同じ場面を見つける ということです。

条件を割り出したとしても、他の場面ではどうなっているかわかりません。

なので、同じ場面があるかどうかを確認して、それが確実なものかどうか確かめましょう。

EAの”3種の神器”

では、このEAにどんなロジックが使われているのか見ていきましょう。

この時、ビジュアルモードはオンにします。

使われているインジケータが表示されるからです。
(されないEAもあります その場合は逆再生は難しいです)

どんなEAでも、絶対に決まっていることが3つだけあります。

  • エントリーロット数
  • エントリーロジック
  • 決済条件

この3つが必ず必要です。

ビジュアルモードをオンにすると、パソコンがチャートを描画するので結構時間がかかります。

上記3点が分かればいいので、期間は長くなくていいです。1~6か月ほどが良いですね。

初回エントリーロット数

ロットを確認するには、テスター画面の「結果」タブを開きます。

見たところ全部0.17ロットだったので、
初回エントリーロット数は0.17であることが分かります。

エントリーロジック

エントリーロジックを割り出す時は
MT4のビジュアルモードを使っていきます。

青い点線で結ばれているのが買い、

赤い点線で結ばれているのが売り です。

エントリーの箇所は線の左端です。

点線を見つけたら、線を辿って「▶」の部分を見つけましょう。

左が買いの始点、右が売りの始点です。

ビジュアルモードで見たところ、なにやら

  • 青い線が3本
  • 赤い線が3本
  • CCIというオシレーターが期間12で設定、-100と100の位置に横線が引かれている
  • StdDevというオシレーターが期間17で設定

されていることが分かります。

線については多分何かしらのMAの仲間でしょうね。

オシレーターはRSIの仲間なので、「相場の売り買いの勢い」を表すツールです。

つまりこのEAは、上記4つのインジケータ、オシレーターを使っているわけですね。

ポジションを何個も持っていないのでナンピンではないことが分かります。

残り調べないといけないのは、青と赤い線の名称と、その期間です。

カーソルを合わせると、

青の方は「Upper Envelope」赤の方は「Lower Envelope」とあり、

3本ずつひかれているのはそれぞれ期間が同じでした。

どうやら「Envelope」というインジケータの仲間みたいですね。

下から「24」「36」「50」それぞれがペアになっています。

EAのエントリーはこのようなインジケータとオシレータの組み合わせで決まります。

エントリーロジックを確認するには、この矢印を辿って右向きに伸びている部分を確認します。

決済条件

決済条件もエントリーと同じく、ビジュアルモードを使います。

線の右端を見ていきます。そこが決済されたポイントです。

【本題】今回のEAを解剖

使われている材料が分かったところで、今回のEAを解剖していきましょう。

まずは、エントリーロジックから見ていきます。
(エントリーロット数は分かったのでここでは省きます)

Envelopeとエントリーの関係

矢印をたどると、買いポジションの始まりにたどり着きました。

一つ目がこれ。

もうひとつ目がこの場面です。

この2つから共通して読み取れることはなんでしょうか?

どうやら線の中だけでエントリーしてそうですが、他の場面を見ると・・・

線の枠外でもエントリーしていることが分かります。

つまり、Envelope青と赤の線はエントリーに関与していないことが分かります。

ただ、下がってきた時に買って、上がってきた時に売っているので、
”逆張りである”ということはわかります。

CCIとエントリーの関係

まずは買いの場面から。

カーソルを合わせると、買いエントリーは
いずれもCCIが-100の場合にのみエントリーしていることが分かります。

つまり、買いの条件は

CCIの数値が-100を下回った時

であることが分かります。


次に、売りの場面を見ていきます。

3か所調べたところ、CCIはどこも「100」以上の数値でした。

つまり、売りの条件は

CCIの数値が100を上回った時

であるとわかります。

StdDevとエントリーの関係

最後にStdDevの条件がどうなっているか見ましょう。


買いの場合

0.2~0.4の間っぽいですが、CCIみたいにラインを引いていないので基準が分かりません。


売りの場合

こちらも3か所調べました。

うーん、わかんないですね…

AIに聞いてみましょうか。

とりあえずエントリー条件として分かっていることは、

CCIが-100以下→買い

CCIが100以上→売り

この2点です。

利確、損切条件を確認

最後に利確、損切条件を確認します。

買いの場合

青い点線の右端が、買いが終わったタイミングです。

見てみると、青い方のEnvelopeに交差した後の終値で利確していることが分かります。

UpperEnvelope50と価格が交差した後のローソク足の終値ですね。

損切は見られなかったので、利確と損切の条件は同じだと仮定します。

売りの場合

売りの場合と逆で、赤い方のEnvelopeに交差したタイミングですね。

具体的には、

LowerEnvelope24と価格が交差した後のローソク足の終値ですね。

AIに伝えてみる

現状分かっていることとして、

  • 初回エントリーロット:0.17(固定)
  • エントリーロジック:CCIが100以上の時(売り)、0以下の時(売り)
  • 利確条件:Envelopeに交差したタイミング
  • なお、StdDevについては不明

という状態です。まずはやり取りしてみて仕様を固めたいですね。

使っているツールを改めて確認しましょう。

  • Envelope(期間:24.36.50)上と下がある
  • CCI(期間:12、0と100でレベル設定されている)
  • StdDev(不明。どういう使い方をするのか分からない

AIに伝える時

AIに伝える時、必ず言う文言があります。

以下の内容で、MT4用のソースコードを全文書いてください。
かならず、MQL4の仕様で書いてください。
エラー、警告が出ないよう関数の互換性に気を付けた上でお願いします。
修正時もコードは修正箇所のみを示すのではなく、常に全文書いてください。
仕様としては以下の仕様です。
~...

これを書いておくとめちゃめちゃ便利です。

エラーを極力少なくしてくれる他、毎回全文コードを書いてくれるので

全消し→貼り付けだけすればいいので、超便利です。

今回のEAリバースの流れ

いきなりかっちり決まった指示はしません。

StdDevの謎が残ってますからね。

まずはそこの仕様を固めたいので、AIに聞いてみましょう。

伝える時は正直に事実を伝えればOKです。

ページが長くなり過ぎないように、要約しています。

やり取りの詳細は▽印を押して確認してください。


実際のやり取り

こちらの文面

現在、MT4用のEAをバックテストして、インジケータを割り出し、再構成しようとしています。
この後コードを書いてほしいのですが、まずは仕様を固めたいので以下参照してください。

現時点で分かっていることは下記の3つ
1.使うインジケータ、オシレーター
2.エントリーロット
3.決済条件

1.について
①Envelope(期間:24.36.50)を使用 LowerEnvelopeは赤色、UpperEnvelopeは青色
②CCI(期間:12)レベルは0と100で設定
③StdDev(期間:17)

2.について
0.17固定

3.について
買いの場合:UpperEnvelopeに価格が交差したタイミング
売りの場合:LowerEnvelopeに価格が交差したタイミング

分からないのはエントリーロジックです。
CCIが100以上:売り
CCIが0以下:買い
まではわかっていますが、
StdDevがどのように使われているのかわかりません。

仕様を固めたいので、StdDevをどう使うか教えてもらえますか?
もし他に質問があれば聞いてください

これでGeminiにGOしてみましょう。

知らないことは聞いたらいいです。

Geminiの回答

EAの仕様策定、非常に面白い試みですね。既存のEAをリバースエンジニアリングして再構成するのは、ロジックの核を理解する上でとても有効な手段です。

ご提示いただいたインジケータの組み合わせ(Envelope、CCI、StdDev)から推測すると、このEAは「相場のボラティリティ(勢い)を確認し、過熱感からの反発を狙う逆張り戦略」である可能性が高いです。

特に不明点とされているStdDev(標準偏差)の役割について、一般的な活用パターンから解説します。

StdDev(標準偏差)の役割と使われ方
StdDevは「価格のばらつき(ボラティリティ)」を測定する指標です。このロジックにおいてStdDevは、「エントリーのフィルター(制限)」として機能していると考えられます。

考えられる使い方は主に2つです。

  1. エントリーの「最低条件」として使用(ボラティリティの確保)
    相場が動いていない(レンジが狭すぎる)時にCCIが反応しても、ダマシに合うことが多くなります。

ロジック: StdDev > 〇〇(一定の値) の時のみエントリー。

意図: 「ある程度相場に勢い(ボラティリティ)がある時だけ動く」ようにし、微細な値動きでの無駄なトレードを排除します。

  1. エントリーの「上限条件」として使用(異常値の排除)
    逆に、StdDevが急上昇している時は、重要指標の発表などで相場がパニック状態にあることを示します。

ロジック: StdDev < 〇〇(一定の値) の時のみエントリー。

意図: 「勢いが強すぎる(トレンドが発生し始めている)時は、逆張りをすると担がれるリスクがあるため見送る」という安全装置です。

推測されるフィルター設定 多くの逆張りEAでは、「StdDevが直近の平均より高い、もしくは一定の閾値を超えていること」を条件にします。なぜなら、逆張りは「行き過ぎたゴムが戻る動き」を狙うため、ゴムが伸びていない(ボラティリティがない)状態では利益が出にくいからです。

仕様確定のための確認事項
より正確なコードに落とし込むために、以下の点を確認させてください。

Envelopeの期間設定について 期間が「24, 36, 50」と3つありますが、これは「3つのうちどれか1つに触れたら」ですか? それとも「3つの平均値」などを使っていますか?(一般的には、複数の期間を重ねて抵抗帯として見る手法が多いです)

Envelopeの「偏差(Deviation)」設定 Envelopeには期間の他に必ず「偏差(0.1%など)」の設定が必要です。バックテストの画面や設定値に「0.1」や「0.05」といった数値はありませんか?

CCIの条件の深掘り 「CCI 100以上で売り / 0以下で買い」とのことですが、これは「100を上抜けた瞬間」ですか? それとも「100より上で、かつStdDevの条件を満たした時」でしょうか?

StdDevの「適用価格」と「メソッド」 デフォルトは Close(終値)および Simple(単純移動平均)ですが、もしバックテストの設定画面で見れるようであれば教えてください。

次のステップへの提案
もしお手元にバックテストの「チャート表示(Open Chart)」ができる状態であれば、エントリーした瞬間にStdDevがどのような数値を指していたか(サブウィンドウのグラフが高い位置にあるか、低い位置にあるか)を数箇所チェックしてみてください。

それにより、前述の「勢いがある時に動く(下限設定)」のか「勢いが強すぎると止まる(上限設定)」のかが判明します。

確認ができ次第、これらの条件を統合したMT4用のコード(MQL4)を作成します。上記の4点について、分かる範囲で教えていただけますか?


どうやらStdDevは「相場がどれだけ動いたのか」を見るためのものみたいですね。

質問してくれているので答えていきましょう。

・Envelopeの偏差については、線をダブルクリックしたら出てきました。

0.17%の偏差ですね。(僕自身はこの偏差とかの意味は全く分かってません

こちらの回答

1.Envelopeの期間設定について

50に触れたタイミング決済です。もしくは平均値かもしれません。

2.Envelopeの「偏差(Deviation)」設定

全て0.17%でした。

3.CCIの条件の深掘り

分かりません。とにかくその数値を満たしたときに売りと買いが入っています

4.StdDevの「適用価格」と「メソッド」

わかりません。0.0010以下でエントリーしている感じはあります
あんまり考慮されてないんですかね?

Geminiの回答

詳細な情報をありがとうございます!パズルのピースがかなり揃ってきました。
特に「StdDevが0.0010以下でエントリーしている感じがある」という洞察は非常に重要です。これは、私が先ほど推測したパターンのうち、「2. エントリーの上限条件(異常値の排除)」として機能している可能性が極めて高いです。
これらを踏まえ、現時点での仕様を整理し、StdDevの役割を定義します。
暫定仕様まとめ

項目設定内容
手法の性質低ボラティリティ時を狙った、逆張りスキャルピング/デイトレ
エントリー条件(買い)CCIが0以下 かつ StdDevが0.0010以下
エントリー条件(売り)CCIが100以上 かつ StdDevが0.0010以下
決済条件(買い)価格が UpperEnvelope (期間50 / 偏差0.17%) にタッチ
決済条件(売り)価格が LowerEnvelope (期間50 / 偏差0.17%) にタッチ
ロット数0.17 固定

StdDev(0.0010以下)が意味すること
StdDev(標準偏差)が 0.0010(10pips相当)以下という条件は、
「相場が安定しており、突発的なトレンドが発生していないこと」をフィルターにしていることを意味します。
なぜこの条件が必要か: 逆張り(CCI 100以上で売りなど)は、強いトレンドが発生すると負け続けます。StdDevで「静かな相場」に限定することで、CCIの反転サインの精度を高めていると考えられます。
考慮されていないのか?: いえ、むしろこのEAの「守りの要」として非常に重要な役割を担っているはずです。
決済ロジックの補足Envelopeの期間50・偏差0.17%を決済に使うのは、「行き過ぎた価格が平均(中央)に戻り、さらに反対側のバンドまで伸び切ったところで利確する」という非常に合理的な出口戦略です。
コード作成前に、最後に1点だけ確認させてください
エントリーの際、Envelopeの「24」や「36」はどのように関わっていると推測されますか?現状の仮説では「決済は50」となっていますが、エントリー側で以下のような挙動はありませんでしょうか。
案A: CCIの条件に加え、「価格がLowerEnvelope(24)を下回っていたら買い」のような価格のフィルターがある。
案B: エントリーには24や36は関係なく、単に表示させて目安にしているだけ。
もし「案A」のように、価格がバンドの外にいることも条件に含まれているようであれば、より精度の高い再現が可能です。心当たりはありますか?
特に思い当たる節がなければ、「CCI + StdDev でエントリーし、Env(50)で決済する」という基本ロジックでまずコードを書いてみることも可能です。どう進めましょうか?

AIってすごいですね。そうです、これはデイトレ仕様の逆張りEAです。

それを明確に伝えていないのにここまで推測するのはやはりすごいですね。

利確に関して認識の誤りがあるのでそれを修正して伝えます。

こちらの回答

Envelopeはエントリーにはかかわっていないと思います。

Lowerの下、LowerとUpperの間、Upperの上どこからでもエントリーしています。

Envelopeは利確の根拠に使われています。

1点、利確に関して認識の誤りがあります。

買いの場合、ローソク足がUpperEnvelopeの50を上抜けたローソク足の終値

売りの場合、ローソク足がLowerEnvelopeの24を下抜けたローソク足の終値

さてさて、仕様書が上がってまいりました。

Geminiの回答

承知いたしました。決済ロジックの詳細な修正、ありがとうございます。 特に売りの決済が「Lowerの24」という点は、非常に具体的なロジックですね。

ここまでの情報を整理すると、「相場の静けさをStdDevで確認し、CCIで反転を狙い、Envelopeで出口を待つ」という、ボラティリティの性質を巧みに利用した仕様が見えてきました。

確定した仕様を以下にまとめます。

【確定】EA基本仕様書

  1. エントリー条件
    買い(Long):

CCI(12) が 0以下

かつ、StdDev(17) が 0.0010以下

売り(Short):

CCI(12) が 100以上

かつ、StdDev(17) が 0.0010以下

ロット数: 0.17 固定

  1. 決済(クローズ)条件
    買いポジションの決済:

価格(終値)が UpperEnvelope(期間50, 偏差0.17%) を上抜けたタイミング

売りポジションの決済:

価格(終値)が LowerEnvelope(期間24, 偏差0.17%) を下抜けたタイミング

ロジックの考察と注意点
この仕様で特徴的なのは、「売りの利確が買いよりも早い(期間24)」という点です。一般的に相場は「下落の方がスピードが速い」ため、利確のタイミングを早めに設定して利益を確保する設計になっていると推測されます。

また、利確が「終値」ベースであるため、ヒゲでタッチしただけでは決済されず、しっかりとそのラインを抜けて確定した時にアクションを起こすことになります。

次のステップ:コード作成
仕様が完全に固まりましたので、この内容に基づいた MQL4コード(MT4用) を作成します。

作成にあたって、最後に以下の2点だけご確認いただけますか?

マジックナンバーの有無: 他のEAと同時稼働させる予定はありますか?(必要であれば設定項目に追加します)

損切りの設定: 現在の分析では「損切り(Stop Loss)」の条件が出てきていませんが、一旦「損切り設定なし(または手動用)」で作成してよろしいでしょうか?

これらが決まれば、すぐにコードを書き始めます!

蓋を開けてみると意外とシンプルでしたね。

あとは同じ期間でバックテストしてみて、同じようなグラフを描ければOKです。

結果はいかに!?

コードを書いてもらいました。

エラーもなく優秀にコードを書き上げてくれました。

あとはバックテストしてみます。

元のEAは、2020/12/01~2025/12/01の期間で、

元のEAのグラフとしてはこんな形でした。

さて、同じ結果になるのか…!?

同じ通貨ペア、同じ期間(要は全く同じ条件です)でバックテストした結果がこちら。

ちょっと粗削りですが、大方右肩上がりのグラフができました!

もう少し原作に近づけたいところなので、さらに検証を重ねます。

さらに精度を上げていく

原型のエキスパート設定を開くと、こんな設定があることが分かりました。

特に注目したいのは赤枠内です。

  • 許容スリッページ:3Pips
  • 最大損切幅:150Pips
  • 最大利益確定幅:150Pips
  • 許容スプレッド:45.0Point

というのは伝えていなかったですね。

他の項目は「なし」とか「0」になっているので変更するとしたらこの項目です。

まずはこれを伝えて作り直してもらいます。

こちらの文面

許容スリッページ:3Pips

最大損切幅:150Pips

最大利益確定幅:150Pips

許容スプレッド:45.0Point

という条件を追加してください。コードは全文で書いてください。

と、いうことで作ってもらいました。

結果はいかに…?

改良版EAの結果

なんか・・・大して変わらなかったですね。

こうなったら、結果をぶつけてAIに考えさせます。

結果をぶつけてAIに考えてもらう

テスター画面でレポートタブを開いた状態で右クリックすると、

結果をコピーできます。

今回のEAと元のEAの結果を貼り付けて何が違いを生んでいるのか考えてみてもらいましょう。

こちらの文面

元のEAとおおよそ同じですが、結果はこれくらい違います。

通貨、期間などの条件は同じです。2020/12/1~2025/12/1 AUDCAD:M5

今回のEA

テストバー数 357726
モデルティック数 61494705
モデリング品質 90.00%
不整合チャートエラー 0
初期証拠金 10000.00
スプレッド 現在値 (34)
純益 1238.76
総利益 23648.85
総損失 -22410.09
プロフィットファクタ 1.06
期待利得 0.87
絶対ドローダウン 737.42
最大ドローダウン 1179.65 (11.30%)
相対ドローダウン 11.30% (1179.65)
総取引数 1416
売りポジション(勝率%) 663 (62.14%)
買いポジション(勝率%) 753 (58.70%)
勝率(%) 854 (60.31%)
負率 (%) 562 (39.69%)
最大
勝トレード 129.57
敗トレード -197.52
平均
勝トレード 27.69
敗トレード -39.88
最大
連勝(金額) 12 (385.16)
連敗(金額) 11 (-356.98)
最大
連勝(トレード数) 388.17 (10)
連敗(トレード数) -416.77 (7)
平均
連勝 3
連敗 2

元のEAの結果がこれです。

テストバー数 357726
モデルティック数 61494705
モデリング品質 90.00%
不整合チャートエラー 0
初期証拠金 10000.00
スプレッド 現在値 (34)
純益 3983.89
総利益 17890.25
総損失 -13906.36
プロフィットファクタ 1.29
期待利得 5.60
絶対ドローダウン 641.83
最大ドローダウン 943.51 (7.03%)
相対ドローダウン 8.70% (892.06)
総取引数 712
売りポジション(勝率%) 336 (63.69%)
買いポジション(勝率%) 376 (66.22%)
勝率(%) 463 (65.03%)
負率 (%) 249 (34.97%)
最大
勝トレード 182.03
敗トレード -199.91
平均
勝トレード 38.64
敗トレード -55.85
最大
連勝(金額) 14 (493.07)
連敗(金額) 5 (-645.93)
最大
連勝(トレード数) 565.56 (13)
連敗(トレード数) -645.93 (5)
平均
連勝 3
連敗 2

原因は何だと思いますか?

これに対するAIの回答がこちら。

AIの回答

バックテスト結果の詳細な比較、ありがとうございます。非常に重要なデータです。 両者の数字を比較すると、原因を突き止めるための決定的な違いが浮き彫りになっています。

最大の違い:取引回数(1416回 vs 712回)
今回のEAは、元のEAに比べてちょうど2倍近い回数の取引を行っています。

今回のEA: 1416回

元のEA: 712回

ここから導き出される結論は、「元のEAには、まだ私たちがコードに含めていない強力なエントリーフィルター(制限)が存在する」ということです。現状のコードはエントリー条件が緩すぎるため、期待値の低い局面でもポジションを持ってしまい、利益を削っています。

具体的に考えられる原因は以下の3点です。

  1. CCIの「抜けた瞬間」の判定(最有力候補)
    現在のコードは「CCIが0以下(または100以上)の間はずっと」エントリー条件を満たします。これだと、CCIが低迷している間に何度もエントリーのチャンスが生まれてしまいます。

元のEAの可能性: 「CCIが100を下から上に抜けた瞬間」かつ「StdDev条件合致」の時だけエントリーしている可能性があります。

修正案: 「1本前は100未満だったが、今は100以上になった」という判定(クロスアップ/クロスダウン)に切り替える。

  1. Envelopeによる価格フィルター
    前回のやり取りで「どこからでもエントリーしているようだ」とありましたが、統計を見ると、元のEAはもっと厳選しています。

元のEAの可能性: CCIだけでなく、「価格がEnvelopeの24または36の外側にいる時だけ」という価格の絶対位置を条件に加えている可能性があります。逆張りEAにおいて、バンドの内側でのCCIサインはダマシになることが多いためです。

  1. StdDevの判定ロジックのズレ
    「0.0010以下」という固定値ではなく、相対的な判定をしている可能性があります。

元のEAの可能性: 「StdDev(17)が、過去〇本のStdDevの平均よりも低い(=今は異常に静かである)」という判定。

影響: 0.0010という固定値だと、相場全体のボラティリティが上がった時期に全くエントリーできなくなったり、逆にボラティリティが低い時期に頻発しすぎたりします。

数値から見るその他のヒント
平均勝トレード(27 vs 38): 元のEAの方が10ドル以上高いです。これは、元のEAの方が「より深い押し目・戻り」でエントリーできているか、利確のタイミングをさらに伸ばす工夫があることを示唆しています。

負率(39% vs 34%): 元のEAは負けを5%抑えています。これはやはりフィルターの精度の差です。

次のステップ:改善のための提案
まずは「取引回数を元のEAに近づける(絞り込む)」ことが先決です。

最も効果が高いと思われる「CCIのクロス判定(抜けた瞬間だけエントリー)」を導入してみませんか? これだけで取引回数が適正化され、パフォーマンスが劇的に改善する可能性があります。

もしよろしければ、この「CCIクロス判定」を追加した修正版コードを作成しましょうか?

大事なことは、鵜吞みにせずにまず自分で考えてみることです。

このままAI任せでやるのも一手ですが、まずその前にAIの仮説が正しいのかどうか、

自分の目で確かめてみましょう。

重大な自分のミスに気付く

と、いうところで自分の重大なミスに気が付きました。

誤:買いの条件として、CCIが0以下

正:買いの条件として、CCIが-100以下

でした。

(なぜか0だと勘違いしてました。)

元のEAを見ると、CCIは-100と100の位置に線が引かれていました。

なのに、AIが出してくれた暫定仕様まとめには、「CCIが0」になっていたのです。

結局は自分の目で見てみないと分からない事でしたね。

暫定仕様まとめ
項目設定内容
手法の性質低ボラティリティ時を狙った、逆張りスキャルピング/デイトレ
エントリー条件(買い)CCIが0以下 かつ StdDevが0.0010以下
エントリー条件(売り)CCIが100以上 かつ StdDevが0.0010以下
決済条件(買い)価格が UpperEnvelope (期間50 / 偏差0.17%) にタッチ
決済条件(売り)価格が LowerEnvelope (期間50 / 偏差0.17%) にタッチ
ロット数0.17 固定

なので、買いの条件を変更してもらいます。

こちらの文面

買いの条件として、CCIは「0以下」ではなく「-100以下」でした。
その部分だけ書き換えて再度コード全文もらえますか?
他の部分は全く変えなくていいです。

再現なるか

さて、バックテストの結果やいかに…!

うん、だいぶ良くなりましたね!

さらに向こうへ

結果をAIに返してあげましょう。

こちらの文面

結果は以下です。

テストバー数 357726
モデルティック数 61494705
モデリング品質 90.00%
不整合チャートエラー 0
初期証拠金 10000.00
スプレッド 現在値 (36)
純益 1201.32
総利益 23250.60
総損失 -22049.28
プロフィットファクタ 1.05
期待利得 0.88
絶対ドローダウン 974.77
最大ドローダウン 1407.99 (13.50%)
相対ドローダウン 13.50% (1407.99)
総取引数 1361
売りポジション(勝率%) 671 (62.00%)
買いポジション(勝率%) 690 (61.74%)
勝率(%) 842 (61.87%)
負率 (%) 519 (38.13%)
最大
勝トレード 129.35
敗トレード -197.77
平均
勝トレード 27.61
敗トレード -42.48
最大
連勝(金額) 14 (302.16)
連敗(金額) 8 (-239.43)
最大
連勝(トレード数) 385.76 (10)
連敗(トレード数) -418.56 (7)
平均
連勝 3
連敗 2

取引数が多いですね。何か改善方法はありますか?

これに対するAIの回答がこちらです。

AIの回答

バックテスト結果の共有ありがとうございます。 CCIの閾値を厳しくしても取引数が「1416回 → 1361回」とわずかしか減らず、元の「712回」とは依然として大きな開きがあります。

この結果から、「CCIが-100以下(または100以上)の間、ずっとエントリー許可が出続けていること」が原因である可能性が極めて高いです。今のコードは、条件を満たしている間に新しい足(M5)ができるたびに次々とエントリーしてしまいます。

取引数を劇的に減らし、元のEAに近づけるための「3つの改善案」を提案します。

取引数を絞り込むための改善案

  1. 「CCIのクロス(突き抜け)」判定(最優先)
    現在の「値が-100以下ならOK」ではなく、「1本前は-100より大きかったが、最新の確定足で-100以下になった瞬間」だけエントリーするようにします。

効果: 1回の過熱局面でエントリーが必ず「1回」に限定されます。

  1. StdDevの相対判定
    元のEAは、StdDevが単に「0.0010以下」ではなく、「直近の平均的なボラティリティよりもさらに静かな時」というフィルターをかけている可能性があります。

修正案: StdDev(17) < iMAOnArray(StdDev, …, 20) のように、ボラティリティの平均値と比較する。

  1. 決済されるまで次を建てない(ポジション制限)
    もし元のEAが一度に1ポジションしか持たないタイプであれば、エントリー頻度は自然に下がります。

修正版コード(CCIクロス判定 + ポジション制限)
取引数を半分程度に絞り込むため、「クロス判定」と「1ポジション限定」を実装した全文です。これで700回前後に近づくはずです。

なんか勝手に作ってくれたので、それ一回試してみます。

結果は・・・

むしろ悪くなりました(笑)

課題になっていたエントリー数も多いままですね。

もしかして・・・を一つ一つ試す

元のEAのバックテスト結果を見ているときに、奇妙な場面を見ました。

以下の場面です。

CCIの数値は何度か-100を下回っているのに、買いのエントリーをしていません。

ここである仮説が立ちます。

これじゃね?が見つかったらすぐ適用

重大なことに気が付きました。

CCIの数値は確かに-100と100に線が引かれていましたが、

実際にエントリーしていたのは-200以下(買い)、200以上(売り)でした。

拡大してカーソルを合わせると詳細が確認できます。

似たような場面を見かけてもエントリーしていなかったのは

この数値が原因だと仮定して、再度作ってもらいます。

こちらの文章

買いの条件:CCIが-200以下

売りの条件:CCIが200以上

に変更してください。

の結果がこちらです。

だいぶ良くなりましたね!

何かが違う…?

このEAでバックテストしてみたところ、全く同じ場面でエントリーしているところがありました。

こちらが原本のEAです。

こっちが今回のEAです。

同じ日付(8/1)の同じタイミングでエントリーしています。

ですが、何かに気づきませんか?

・・・

そうです、利確条件です。

原本のEAはそのままポジションを持ち続けているのに対し、

今回のEAはその後すぐに決済してしまっています。

つまり、利確条件が違っていたのです。

どこが間違っているのか?

では、利確で何が違っていたのか?

左が原本、右が自作です。

そもそもEnvelopeが2本しか引かれていません。

原本のEAにおいて、Envelopeはそれぞれ24.36.50の期間で設定されていました。

また、原本のEAのEnvelopeは「移動平均の種別」が[Exponential]なのに対し、

自作のEAは「移動平均の種別」が[Simple]になっていました。

これも大きな違いです。

[Simple]と[Exponential]は計算方法が違うらしく、そりゃEAの結果も違うわけです。

また、Envelopeの36が自作EAに反映されていないことも違いです。

原作と自作の違いをまとめると、

原作

  • Envelopeの移動平均の種別は[Exponential]
  • 利確条件がEnvelopeの24.36.50を全て上抜け(買い)、もしくは全て下抜けした時(売り)

自作

  • Envelopeの移動平均の種別は[Simple]
  • 利確条件はEnvelope50を上抜け(買い)、Envelope24を下抜け(売り)

となっています。

この違いをAIに伝えましょう。

AIへの文章

Envelopeの移動平均の種別は[Exponential]に変更
利確条件はEnvelopeの24.36.50を全て上抜け(買い)、もしくは全て下抜けした時(売り)
に変更してください。他は変えなくていいです。

結果やいかに…!

おお!だいぶ良くなりました!

レポートも見てみましょう。

こちらが原作のレポートです。

若干数値は劣るものの、めちゃくちゃいいものができました!

原作 vs 完成版 比較テーブル

項目原作(目標値)完成版(現状)差異 / 評価
純益$4,270.06$2,760.30-$1,509.76
総取引数711回670回-41回 (94%合致)
勝率65.68%63.13%-2.55%
平均勝トレード$38.75$39.92+$1.17 (ほぼ一致)
平均敗トレード-$56.67-$57.19-$0.52 (ほぼ一致)
プロフィットファクタ1.311.20-0.11
期待利得6.014.12-1.89
最大ドローダウン$931.00 (6.83%)$1,200.83 (11.83%)+$269.83

※結果はAUDCADの5分足でバックテストしたものです。

作ってみた感想

今回は有料で販売されていたEAをリバース設計してみました。

結果として、5年で利益をきちんと生むものを作れたので文句なしです。

原作と何が違うのか?を突き詰めて確認していくのはやはり面白いですね。

まとめ

長くなりましたが、これでEAリバース完了です。

やったことはシンプルです。

「チャートと数字をただ追う」

これだけです。

【条件なし】ダウンロードはこちらから

今回のEA仕様はスプレッドシートから、

EAのダウンロードはこちらから

確認できます!

※「プレビューできません」と出ますが、ダウンロードを押して大丈夫です。

設定の仕方などでわからないことがあればコメントください。

(個人情報を含むやり取りはLINEでさせてもらっています。)

コメント

タイトルとURLをコピーしました