ChatGPTに「最強EA」を作らせたらどうなる?MT4で14年超・2通貨を検証した結果

ChatGPTでEAを作成し、14年超・2通貨でバックテスト検証した実践記事のアイキャッチ
EA・MT4ノウハウ集
スポンサーリンク

「ChatGPTにEAを作らせたら、いまのAIならかなり強いEAを作れるのでは?」

今回はこの疑問を実際に検証するため、EAのロジック設計から改善方針の判断までChatGPTを使い、MT4で長期バックテストを行いました。

ただし、最初から高性能なEAが完成したわけではありません。むしろ初期版は、複数の相場判定やフィルターを盛り込んだにもかかわらず、取引コストを含めるとほぼ損益分岐でした。

今回の結論
AIに複雑なロジックを追加させ続けるよりも、成績を分解して悪い部分を特定し、不要な条件を削る方が大きく改善しました。
最終的にEURUSDで改善したEAをUSDJPYへ展開し、1つのパラメータだけ感度確認したところ、2012~2022年ではPF1.49まで改善しています。
ChatGPTでEAを作るところから試したい方へ
本記事は、AIとEAを実際に作り込みながら検証した実践編です。
まずはChatGPTを使ってEAを作る基本的な流れを知りたい方は、以下の記事からどうぞ。

▶ ChatGPTでEAを自動生成する方法を見る

実際にAIとはどうやり取りしたのか

今回のEA開発は、最初にChatGPTへ「強そうなロジックを1つ作って」と依頼して終わり、という流れではありません。

実際には、バックテスト結果をその都度AIへ返しながら、次に何を変えるべきか、逆に何を変えない方がいいかを何度も相談しました。

やり取りの流れを簡単にまとめると、こんな感じです。

私: AIで、できるだけ強いEAをゼロから考えてみたい。
AI: トレンド・レンジ・ブレイクアウトを相場状況で切り替える構成を提案。

私: バックテストしたが、思ったほど良くない。
AI: フィルターを増やす前に、どのロジックが利益を出していて、どこが足を引っ張っているか分解して確認した方がいい。

私: Pullbackが悪く、Breakoutはプラスだった。
AI: Pullbackを止めて、残ったフィルターも1つずつ外して比較するアブレーションテストを提案。

私: USDJPYではLookbackを変えるとさらに良くなった。
AI: 大量最適化には進まず、Lookback周辺だけを確認して、尖った1点ではなく近傍でも成績が維持されるかを見る。

私: 直近ではLookback=24の方が少し良い。
AI: それを見た後で24へ変更すると、直近相場への後付け最適化になるため、28のまま固定した方が検証としてきれい。

このやり取りで特に印象に残ったのは、AIが必ずしも「もっと最適化しましょう」と言わなかったことです。

むしろ、成績が良くなった後ほど「ここから先は触りすぎない方がいい」「その変更は後付けになりやすい」という方向へブレーキをかける場面が多くありました。

会話ログをすべて載せると長くなりすぎるため、本記事では判断が変わったポイントだけを抜き出していますが、今回のEA開発ではこの「結果を返す → AIが診断する → 次の1手だけ試す」という流れを繰り返しています。

今回の検証条件

比較条件が途中で変わると、ロジック改善による差なのかテスト条件による差なのか分かりにくくなります。そこで、記事内で掲載する主要バックテスト画像は次の条件へ統一しました。

項目条件
プラットフォームMT4
テスト環境FXTF-Demo
時間足H1
開発・比較期間2012~2022年
最終確認モデル全ティック(Every tick)
スプレッドStrategy TesterのSpread=10固定
初期証拠金10,000
1回のリスク口座資金の約0.5%
ナンピン・マーチン不使用

今回使用したヒストリカルデータについて

今回の長期バックテストでは、FXTF MT4のヒストリカルデータを使用しています。 FXTFでは、本口座のマイページから2012年1月3日以降の1分足BID四本値データをCSV形式で取得できます。

取得した1分足データをMT4へ取り込み、必要な時間足データを作成することで、今回のような2012年からの長期バックテスト環境を用意できます。

FXTFのヒストリカルデータを使ってみたい方へ
ダウンロード方法からMT4への取り込み、H1など他時間足データの作成方法まで、以下の記事で画像付きで解説しています。

▶ FXTF MT4ヒストリカルデータの入手・取り込み手順を見る

※ FXTFのヒストリカルデータ取得は本口座が対象です。今回のStrategy Testerの実行環境はFXTF-Demoを使用しています。

※ Strategy TesterのSpread=10は10ポイント指定で、今回のEURUSD・USDJPYでは通常約1.0pips相当です。
※ PF(プロフィットファクタ)は「総利益 ÷ 総損失の絶対値」で、1を上回るほどバックテスト上は利益が損失を上回っています。DD(ドローダウン)は、資産のピークからどれだけ落ち込んだかを見る指標です。

まずAIに「相場に合わせて戦略を切り替えるEA」を考えさせた

最初にChatGPTへ求めたのは、単純な移動平均クロスではなく、相場環境を判定してロジックを切り替えるEAでした。

  • トレンド相場:EMAを使った押し目・戻り目
  • レンジ相場:ボリンジャーバンド+RSI
  • 収縮後:高値・安値ブレイク

さらにER(Efficiency Ratio)、ATR、EMAの位置関係などを使い、相場がトレンドなのかレンジなのかを判定する構成です。

一見するとかなり賢そうですが、EURUSD・2012~2022年・Spread10でEvery tick検証したv0.02は次の結果でした。

PF純益総取引数相対DD
1.01+332.772,05935.21%
ChatGPTで作成したAI EA初期版v0.02のEURUSDバックテスト結果
初期版v0.02のEURUSDバックテスト。複数の相場判定を組み合わせたものの、Spread10ではPF1.01とほぼ損益分岐でした。

取引数は十分ありますが、PFは1.01。資産曲線も大きく沈む期間があり、「AIに複雑なロジックを考えさせれば、そのまま強いEAになる」という結果ではありませんでした。

フィルターを厳しくしたら、むしろ悪化した

次に考えたのは、「悪い場面をもっとフィルターで除外すれば改善するのではないか」という方向です。

そこで条件を厳しくしたv0.03を作りましたが、2012~2022年の検証ではPF0.965、819トレードまで低下しました。

ここで分かったこと
条件を増やすほど良くなるとは限りません。むしろ取引機会を削った結果、「有効なトレードまで消している」可能性が出てきました。

発想を変えて、H4で方向・H1でエントリーする構成へ

ここでv0系を細かく最適化するのをやめ、ロジック自体を組み直しました。

v1系では、H4で大きな方向を判断し、H1でエントリータイミングを取る構成へ変更。レンジ戦略も外し、トレンド方向のブレイクアウトを中心にしました。

ところが、最初のv1.00もPFは約0.96。ここでも完成には至りません。

ロジック別に分解すると「押し目」が足を引っ張っていた

そこで、EA全体の成績だけを見るのではなく、エントリー方式ごとに診断しました。

ロジック取引数PF判断
Pullback1,1540.899停止
Breakout5011.052残す

上表はv1.00の中でロジック別に成績を分けて確認した結果です。PullbackをOFFにして再テストすると、Breakoutのみで724トレード・PF1.069まで改善しました。

単に上表の501トレードだけを残したわけではなく、ロジック構成を変えて再テストしているため、取引数も変化しています。

ここから方針を「条件を足す」から「1つずつ消して、本当に必要な条件だけ残す」へ変更します。

アブレーションテストで不要な機能を削る

v1.01では、ATRトレーリング、ADX、DI、H4の傾き判定などを個別にOFFにして比較しました。

その結果、意外にも次の4つを外した組み合わせが最も良好でした。

  • ATRトレーリングを使わない
  • H4 ADXフィルターを使わない
  • DIフィルターを使わない
  • H4 EMAの傾きフィルターを使わない

2012~2022年のOpen prices検証では、このTest14設定がPF1.287、858トレード、相対DD10.89%となりました。

ここで重要なのは「最適な数値を大量に探した」のではなく、既存機能を削ってどれが悪さをしているか確認したことです。

v1.02をEvery tick・Spread10で再確認

Test14の設定をv1.02のデフォルトとして固定し、より細かいEvery tickで再度バックテストしました。

記事用の比較では取引コスト条件も揃えるため、Spread10で統一しています。

PF純益総取引数相対DD
1.17+5,261.4187115.75%
AI Regime Fusion EA v1.02のEURUSDバックテスト結果
EURUSD v1.02の2012~2022年Every tick・Spread10。初期版のPF1.01からPF1.17へ改善しました。

初期版と比べると、PFだけでなくDDも大きく改善しています。

なお、過去のコスト耐性確認ではSpread5でPF1.21、Spread10では今回の再計測でPF1.17となりました。スプレッドを広げれば当然成績は落ちますが、それでも開発期間ではPF1を維持しています。

EURUSDでは2023年以降をOOSとして確認

ここまでの改善判断は2012~2022年だけで行い、2023年以降は見ないまま一度ロジックを固定しました。

そのためEURUSDの2023年以降は、開発に使っていないOOS(Out of Sample)として確認できます。

Spread10では、2023年以降の確認結果はPF1.06、純益+549.16、316トレードでした。

PFは大きく低下しており、強い優位性とは言えません。それでも「開発期間だけきれいで、OOSでは即座に破綻」という結果にはなりませんでした。

次に同じv1.02をUSDJPYへそのまま入れてみる

EURUSDだけに合わせ込んだEAなら、別通貨へ持っていくと簡単に崩れる可能性があります。

そこで次は、v1.02のデフォルト設定、つまりBreakoutLookback=20のままUSDJPYへ投入しました。

PF純益総取引数相対DD
1.33+20,081.0892529.14%
v1.02デフォルト設定をUSDJPYへ適用したバックテスト結果
v1.02デフォルト(BreakoutLookback=20)をUSDJPYへ適用。2012~2022年・Every tick・Spread10でPF1.33でした。

EURUSDよりも利益は大きく、PFも1.33まで上昇しました。

一方で相対DDは29.14%あるため、単純に「EURUSDより優秀」とは言い切れません。利益と引き換えに値動きも大きい結果です。

USDJPYではBreakoutLookbackだけ感度確認

ここで大量のパラメータを最適化すると、USDJPY専用の過剰最適化になりやすくなります。

そこで、ブレイクアウト判定に使うBreakoutLookbackだけを限定的に確認しました。

LookbackPF純益取引数相対DD
201.33+20,08192529.14%
221.40+25,58989224.68%
241.45+27,35586724.76%
261.47+28,20285722.76%
281.49+30,04983920.07%

20から28へ少しずつ伸ばすにつれて、PFが滑らかに改善し、DDも低下しています。

「28だけが偶然突出した」という形ではなく、22~28の周辺でも改善傾向が続いているため、単一の尖った最適値よりは安心材料になります。

USDJPYでBreakoutLookbackを28にしたバックテスト結果
BreakoutLookback=28のUSDJPYバックテスト。2012~2022年・Every tick・Spread10でPF1.49、相対DD20.07%となりました。

2012年から2026年8月まで期間を伸ばして確認

開発期間で良かったLookback=28を、そのまま2012年から2026年8月まで伸ばしました。

PF純益総取引数相対DD
1.31+31,440.601,16820.06%
USDJPY Lookback28を2012年から2026年8月まで検証した長期バックテスト結果
USDJPY Lookback=28を2012年~2026年8月まで延長。PF1.31、1,168トレードで、長期では直近の成績低下も確認できます。

長期全体ではPF1.31を維持しましたが、グラフを見ると直近はピークから大きく下落しています。

つまり、2012~2022年で非常に良かったからといって、現在も同じ強さで機能しているわけではありません。

長期バックテストの注意点
今回の2012~2026年8月テストでは、不整合チャートエラーが1件記録されています。約2.46億モデルティックに対して1件ですが、完全な0エラーではないためその点は明記しておきます。

2023年以降だけ見ればLookback=24の方が良い。それでも変更しない

開発期間の2012~2022年とは分けて、2023年以降の追加確認期間だけでLookback=22~32を比較すると、最も良かったのは28ではなく24でした。

LookbackPF純益取引数
221.06+447.76302
241.07+524.75293
261.04+316.79288
281.06+437.30286
301.03+226.97283
321.04+307.69279

ここで「直近は24が一番良いから24へ変更する」とすると、直近相場を見た後でパラメータを合わせることになります。

しかも22~32のPFは1.03~1.07の狭い範囲です。これは「28だけが壊れた」というより、EAそのものの優位性が直近では薄くなっていると見る方が自然です。

そのため、この記事ではLookback=28を現時点の採用値として固定し、直近成績を理由に再調整しません。

USDJPYの2023年以降は「完全なOOS」ではない

ここは検証の透明性として重要なので明記します。

EURUSDでは、2023年以降を見る前にロジックを固定したため、2023年以降を独立したOOSとして扱えます。

一方USDJPYは、Lookbackを感度確認する前に2023年以降の結果を一度確認しています。そのため、USDJPYの2023年以降は完全に未見のOOSとは呼ばず、追加確認として扱います。

本当に新しいOOSを作るなら、まだ結果を見ていない別通貨、別ブローカー、または今後のフォワードデータで確認する必要があります。

今回、AIを使って特に良かったと感じたこと

今回、自分だけでEAを作っていた場合との一番大きな違いは、第三者の目線を入れたまま開発を進められたことだと感じました。

EA開発では、バックテストを何度も見ているうちに「この期間だけ悪いから除外しよう」「この数値を少し変えればもっと良くなる」と、どうしても良い結果へ寄せたくなります。

自分一人で作っていると、その変更が本当にロジック改善なのか、それとも過去データに合わせただけのカーブフィッティングなのか、判断が甘くなりがちです。

今回ChatGPTへ結果を返しながら進めると、「その変更はまだ試してよい」「ここから先は後付け最適化になる」「良い結果が出たので一度固定した方がいい」といった形で、かなり客観的に開発を進められました。

私が今回もっとも便利だと感じた点
EAのロジックを考えてもらうこと以上に、自分の最適化欲にブレーキをかける第三者としてAIを使えることでした。

また、バックテストそのものも、Codexを使えば条件を変えたテストの実行や結果整理を自動化できます。

EA開発では、ロジックを考える時間よりも「同じ条件で何本もテストする」「結果をCSVへまとめる」「前回との差を見る」といった作業にかなり時間を取られます。ここを自動化できると、人間は結果を見て次の判断をする部分へ集中しやすくなります。

今回のEAがそのまま実運用で通用するかは別問題ですが、少なくともロジックの内容次第では、AIとバックテスト自動化を組み合わせることで、かなり面白いEAまで作り込めそうという感触は得られました。

  • ロジック案の作成
  • テスト結果の診断
  • 不要な条件の洗い出し
  • 過剰最適化を避ける判断
  • Codexによるバックテストの自動化
  • 結果整理と次に試す条件の絞り込み

この一連の流れまで含めると、AIは単なる「EAコード生成ツール」ではなく、EA開発の設計・検証・判断を一緒に進める役として使う方が価値が大きいと感じました。

結局「AIが作る最強EA」は完成したのか?

今回の結果だけで、このEAを「市場で最強のEA」と呼ぶことはできません。

USDJPYの開発期間ではPF1.49まで伸びましたが、2012~2026年8月へ広げるとPF1.31まで低下し、2023年以降の追加確認ではPF1.03~1.07程度まで優位性が薄くなっています。

ただし、今回の実験で面白かったのは、最初にAIが考えた複雑なEAより、失敗を分析しながら機能を削ったEAの方が明確に良くなったことです。

今回の流れ

EURUSD v0.02:PF1.01
↓ 複雑化して悪化
↓ H4+H1へ再設計
↓ Pullbackを停止
↓ ATR Trail・ADX・DI・Slopeを削除
EURUSD v1.02:PF1.17(Every tick・Spread10)
↓ 同じ設定をUSDJPYへ
USDJPY Lookback20:PF1.33
↓ Lookbackのみ感度確認
USDJPY Lookback28:PF1.49
↓ 2012~2026年8月へ延長
長期結果:PF1.31

まとめ|AIと一緒にEAを作ってみて感じたこと

今回、ChatGPTを使ってEAをゼロから設計し、バックテスト結果を返しながら改善を繰り返しました。

最初のEURUSD v0.02はPF1.01。そこから複雑な条件を追加するのではなく、悪いロジックを切り分け、不要なフィルターを削ることでEURUSD v1.02はPF1.17へ改善しました。

さらに同じEAをUSDJPYへ持っていくと、デフォルトのLookback=20でPF1.33。Lookbackだけを限定的に確認した結果、28では2012~2022年でPF1.49まで伸びました。

一方、2012~2026年8月まで広げるとPF1.31、2023年以降の追加確認ではPF1.03~1.07程度です。つまり、AIを使ったからといって、過去から現在までずっと強いEAが簡単に完成するわけではありません。

ただ、実際に作ってみて感じたのは、AIの価値は「勝てるEAの答えを出してくれること」だけではないということです。

私一人で作っていれば、成績が悪い期間を見つけるたびに条件を追加したり、直近で良かった数値へ変更したりして、もっとカーブフィッティングを進めていた可能性があります。

その点、AIへ結果を見せながら進めると、第三者の目線で「そこは触らない方がいい」「その改善は後付けになりやすい」と止めてもらえるため、EA開発をかなり客観的に進められました。

さらにCodexを使えばバックテストや結果整理も自動化できるため、ロジック作成から検証までの速度はかなり上げられます。

今回の実験で感じたこと

・AIはEAを一発で完成させる魔法の道具ではない
・一方で、第三者目線で過剰最適化を抑えてくれるのはかなり有効
・バックテスト結果を返しながら会話する使い方と相性が良い
・Codexを使えば反復テストも自動化できる
・ロジック次第では、AIを使ってかなり良いEAまで作れる可能性は感じた

今回作ったEAについては、これで「最強EAが完成した」と結論づけるのではなく、現時点の1つの到達点として見ています。

むしろ今回の収穫は、AIにEAを作らせることより、AIと一緒にEAを検証する方法が見えてきたことでした。

ダウンロード

本記事で最終的に使用したAI_Regime_Fusion_EA_v1_02を、検証用EAとして公開します。

EAファイルのダウンロードはこちら👇

📥 AI Regime Fusion EA v1.02 をダウンロード

※ 配布ファイルはEX4形式です。EURUSDは基本的にデフォルト設定、USDJPYで本記事の最終検証条件を再現する場合は「BreakoutLookback=28」へ変更してください。
※ 本EAは本記事の検証内容を試すためのサンプルとして公開するもので、将来の利益を保証するものではありません。


同じように長期バックテストしてみたい方へ

今回のEAだけでなく、自作EAや他のEAでも長期検証してみたい場合は、FXTFのヒストリカルデータを使うと2012年以降のデータを用意できます。

FXTFではヒストリカルデータを本口座のマイページから取得するため、まだ口座を持っていない場合は口座開設後にダウンロードする流れになります。

今回と同じバックテスト環境を作る手順

1. FXTFの本口座を用意する
2. マイページから1分足ヒストリカルデータを取得する
3. MT4へCSVを取り込む
4. H1など必要な時間足データを作成する
5. 上のEAを使ってバックテストする

詳しい手順は、以下の記事でまとめています。

▶ FXTF MT4ヒストリカルデータの入手・取り込み手順

※ 本記事の結果は過去データを用いたバックテストであり、将来の利益を保証するものではありません。実運用する場合は、フォワードテストや取引環境の違いも含めて十分に確認してください。

コメント

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