最終更新: 2026年06月
ChatGPTやClaudeを使ってFX用EA(エキスパートアドバイザー)を作ることは、2026年現在、技術的に実現可能です。ただし「プロンプトを送れば完成品が出てくる」という認識は修正が必要です。
生成AIでEAを作るプロセスの実態——どこまでAIが担え、どこに人間の判断が必要か——を、技術的な視点から解説する。
免責事項: FX取引には元本割れリスクがあります。本記事はEA開発の技術的な手順を解説するものであり、投資収益を保証するものではありません。
生成AIによるEA作成の現実
まず現状を正直に整理しておく。
ChatGPT(GPT-4o)やClaudeを使ったMQL5コード生成は、2026年時点でかなりの精度になっている。シンプルなロジックなら、初回で動くコードが出てくることは珍しくない。ただし、複雑なロジックや細かいMQL5仕様への対応は「修正サイクルが必要」になる。
「AIが書いたコードにはエラーが含まれることがある」——これを最初から前提に置いておくことが、作業効率を上げる鍵だ。
実際の作業時間の目安として、シンプルな逆張りEA(RSIの過熱域でのエントリー・TP/SL固定)であれば、初回プロンプトからコンパイル通過まで1〜2時間程度が現実的だ。複数の指標を組み合わせた複雑なロジックは、3〜5時間のエラー修正サイクルを見ておくとよい。
また、生成AIの性質上「同じプロンプトを2回投げても違うコードが出る」ことがある。特に曖昧な仕様の部分では、AIが独自に判断して実装する。その判断が自分の意図と合っているかは、コードを読んで確認する必要がある。完全にコードを読めなくても、主要なロジック部分(エントリー条件・決済条件)を自然言語で説明してもらう機能を活用すると確認効率が上がる。
EA作成の前提:最低限必要な知識
生成AIを使ってEAを作る場合でも、以下の知識は持っておく必要がある。
MQL5の基本的な構造の理解:
- OnInit() / OnTick() / OnDeinit() 関数の役割
- 注文関数(OrderSend / trade.Buy / trade.Sell)の基本
- コンパイルエラーとランタイムエラーの違い
完全にゼロから始める場合、MetaEditor(MT5に付属の開発環境)でのコンパイルと動作確認の手順だけでも事前に確認しておくことを推奨する。
なぜこれが必要か: AIが生成したコードにエラーがあったとき、「どこを修正すればいいか」を理解するための最低限の文脈が必要だからだ。
MQL5の学習リソースとしては、MetaQuotes社が提供する公式ドキュメント(MQL5.com/ja)が最も信頼できる情報源だ。特に「OrderSend関数のリファレンス」と「CTradeクラスの使い方」は、AIが生成するコードのエラーを修正する際に頻繁に参照することになる。
知識ゼロでつまずきやすい具体例:
- AI生成コードが
CTradeクラスを使っているのに#include <Trade\Trade.mqh>が抜けていてコンパイルエラーになる OrderSendの構造体パラメータが旧バージョン(MT4時代)の書き方になっていてMT5では動かない- ポジション管理を
OrdersTotal()で書いているが、MT5ではPositionsTotal()が正しい
これらの修正は、エラーメッセージとMQL5ドキュメントを照合すればほとんど解決できる。
プロンプト設計:精度を上げる書き方
これが最も重要な工程だ。同じロジックでも、プロンプトの書き方で生成されるコードの品質が大きく変わる。
低精度になるプロンプト(悪い例)
RSIとMACDを使ったEAを作ってください。
これは曖昧すぎる。何のパラメータを使うか、エントリー条件は何か、ロットサイズは何か——何も決まっていない。
高精度になるプロンプト(良い例)
MT5(MQL5)用のEAを作成してください。
【エントリー条件】
買い: RSI(14)が30以下かつ、MACD(12,26,9)のヒストグラムが直前バーよりプラス方向に変化している場合
売り: RSI(14)が70以上かつ、MACDのヒストグラムが直前バーよりマイナス方向に変化している場合
【決済条件】
TP: エントリー価格から50pips
SL: エントリー価格から25pips
【ロット設定】
固定ロット: 0.1
1チャートに1ポジションのみ保持(ポジション重複なし)
【対象通貨ペア・時間足】
USDJPY H1チャートでテスト予定
この形式で書くと、コンパイルエラーなしで動くコードが出る確率が大きく上がる。
プロンプト設計のポイント
- 数値を明示する — 「RSIが低いとき」ではなく「RSI(14)が30以下」
- エントリー・決済・ロットを分けて書く — まとめると混乱が起きやすい
- 使う時間足・通貨ペアを明記する — MT5の仕様によって最適なコードが変わる
- 「1ポジションのみ」等の制約を明示する — 書かないとポジションが際限なく積まれる場合がある
プロンプトを分割して出す方法
複雑なEAを一度に作ろうとすると、AIが誤解しやすい。推奨するのは「分割依頼」だ。
- 1回目: エントリー条件と基本構造だけ生成してもらいコンパイル確認
- 2回目: 「先ほどのEAに決済条件を追加してください。TP=50pips、SL=25pips」
- 3回目: 「フィルター条件として時間帯制限(東京時間のみ)を追加してください」
このように機能を1つずつ追加していくと、どのステップでエラーが出たかが特定しやすくなる。
生成されたコードのMetaEditorへの実装手順
Step 1: MetaEditorを開く
MT5上部メニューから「ツール」→「MetaEditor」、または F4キーで起動。
Step 2: 新しいEAファイルを作成
「ファイル」→「新規作成」→「エキスパートアドバイザー(テンプレート)」を選択。ファイル名を入力(例: RSI_MACD_EA)。
Step 3: 生成されたコードを貼り付け
テンプレートとして出てきた雛形コードを全選択して削除し、ChatGPTが生成したコードをそのまま貼り付ける。
Step 4: コンパイルとエラー確認
F7キーでコンパイル。下部の「エラー」タブにエラーが表示されたら、そのエラーメッセージをそのままChatGPTに「このエラーを直してください:{エラー内容}」と伝える。
このサイクルを繰り返す。エラーなしでコンパイルできれば、MT5の「ナビゲーター」に追加されたEAが表示される。
Step 5: MT5チャートに追加して動作確認
コンパイル成功後、MT5のナビゲーターウィンドウから対象EAをチャートにドラッグ&ドロップする。EAのプロパティ画面で「自動売買を許可」にチェックが入っていることを確認し、MT5のツールバーの「自動売買」ボタン(スマイルマーク)が緑色になっているかを確認する。
チャート右上に「EA名」と共にスマイルマーク(またはフラウニーマーク)が表示される。スマイルマークであれば稼働中だ。フラウニーマークの場合は自動売買の許可設定を再確認する。
バックテストによる検証:実装後に必ず実施すること
コードが動くことと「使えるEA」は別問題だ。
MT5のストラテジーテスターで以下の検証を実施する:
テスト設定の基本:
- モード: すべてのティック(最も精度が高い)
- 対象期間: 最低1年以上(できれば3〜5年)
- 通貨ペア・時間足: プロンプトで指定したものと同じ
評価する指標と基準値: | 指標 | 目標値 | 意味 | |---|---|---| | プロフィットファクター(PF) | 2.0以上 | 利益 ÷ 損失(高いほど良い) | | 最大ドローダウン | 20%以下 | 最大の含み損の割合 | | 総取引数(N) | 200以上 | 統計的信頼性の担保 | | 勝率 | 40〜60% | 勝率よりPFと期待値が重要 |
バックテストでPF2.0未満・最大ドローダウン20%超のものは、パラメータの調整または根本的なロジックの再設計が必要だ。この段階をスキップして本番運用するのは、統計的に根拠がない。
バックテスト後の追加検証(過剰最適化チェック):
バックテストで良い結果が出た場合、必ず以下の確認を行う。
- 期間を分割してテスト: 全期間のPFが良くても、前半・後半それぞれでPFが1.0を超えているかを確認する
- パラメータを±1ずらしてテスト: RSI期間14が最適でも、13・15でも近似のPFが出るかを確認する。14だけ突出している場合は過剰最適化の疑いがある
- 異なる通貨ペアでテスト: USDJPYで設計したロジックがEURUSDでも同様に機能するかを確認する(ロジックの普遍性の確認)
ChatGPT vs Claude:EA生成の比較
EAを作る上での生成AIの選択も重要な判断だ。
ChatGPT(GPT-4o)の特徴:
- コード生成の安定感は高い
- ただしFX特有の文脈(MT5仕様の細かい部分)で誤りが出ることがある
- 長い会話でコンテキストが失われやすい
Claude(Sonnet/Opus)の特徴:
- より長い文脈を保持できる(複雑なEAの修正サイクルに有利)
- エラーの原因分析が丁寧な場合が多い
実装面での話をすると、FX専用ツールであるHedgrow FXはMT5/MQL5の仕様を最初から把握した状態でコード生成できるため、汎用AIよりもFX特有の仕様エラーが少ない傾向がある。Claudeと会話しながらインジケーターが作れる hedgrow-fx はこちら
よくあるエラーと解決法
| エラー | 原因 | 解決策 |
|---|---|---|
| 'CTrade' - undeclared identifier | CTrade クラスの宣言がない | #include <Trade\Trade.mqh> を先頭に追加 |
| OrderSend error 130 | STOPレベル違反 | SL/TPの値をブローカーの最小値以上に変更 |
| 注文が出ない | 自動売買が許可されていない | MT5の設定で自動売買を有効化 |
| バックテストでシグナルが出ない | 時間足の設定ミス | プロンプトで指定した時間足と一致しているか確認 |
エラー修正を効率化するコツ:
エラーが出た際に「このエラーを直してください」だけ伝えるのではなく、「エラーの前後10行のコードと、エラーメッセージ全文」をセットで伝えると修正精度が上がる。ChatGPTもClaudeも、コンテキストが多いほど正確な修正ができる。
また、同じエラーが2〜3回修正しても解決しない場合は、「別の実装方法で書き直してください」とリセットするのが有効な場合が多い。
内部リンク候補
- EAパラメーターの最適化方法と過剰最適化を防ぐ原則については「EAパラメーター最適化の方法と落とし穴」を参照。
- バックテスト結果の正しい読み方・PFの基準については「FXバックテストのプロフィットファクター基準」を参照。
まとめ
ChatGPTでFX EAを作ることは技術的に可能だが、以下を前提として進めることが重要だ:
- プロンプトの精度がコードの品質を決める——曖昧な入力からは曖昧な出力が出る
- コンパイルエラーは必ずある——エラー修正サイクルを最初から想定して作業する
- バックテストの基準(PF2.0以上・ドローダウン20%以下・N=200以上)を通過したものだけを本番投入する
- 期間分割テストとパラメータ近傍テストでカーブフィッティングを確認する
「AIが作ったから動く」ではなく「AIが草稿を出して、自分が検証して仕上げる」という認識が、長く使えるEAを作るための正しい姿勢だ。
免責事項: FX取引には損失リスクがあります。バックテスト結果は過去のパフォーマンスであり、将来の収益を保証するものではありません。
よくある質問(FAQ)
Q: ChatGPTでFX EAは本当に作れますか? A: 技術的には作れます。ただし「プロンプトを送るだけで完成品が出る」ではなく、コンパイルエラーの修正サイクルと、バックテストによる検証が必要です。
Q: プログラミング未経験でもEAが作れますか? A: MetaEditorの基本操作とコンパイルの仕組みを理解していれば、AI補助でコードを書かなくても実装できます。ただし完全未経験では設定ミスに気づけない場合があります。最低限、MQL5のOnTick関数とコンパイルの流れだけは把握しておくことを推奨します。
Q: ChatGPT と Claude どちらがEA作成に向いていますか? A: 両者ともに使えますが、FX特化ツールであるHedgrow FXはMT5/MQL5の仕様を最初から把握しているため、FX文脈での精度が高い傾向があります。
Q: バックテストで良い結果が出たEAは本番でも稼げますか? A: バックテストは過去データでの成果であり、将来の成果を保証しません。フォワードテスト(デモ口座での実地検証)を必ず経てから本番投入を判断してください。
Q: プロフィットファクター2.0以上というのはなぜ2.0が基準ですか? A: PF1.0は損益分岐点(利益=損失)を意味します。スプレッド・スリッページのコストを考えると、PF1.5以下は実運用で利益を出すのが難しいとされています。2.0以上は統計的に「有意な優位性がある」と判断できる一般的な基準値です。
Q: 生成されたEAのコードに問題がないかどうかを確認する方法はありますか? A: まずコンパイルエラーが0件であることを確認します。次にバックテストでシグナルが正しく発生しているかをビジュアル確認します。さらに「このコードのエントリーロジックを日本語で説明してください」とAIに聞いて、意図通りの実装になっているかを確認するのが有効です。
Q: EAをゴゴジャングルで販売することは可能ですか? A: AIで生成したEAであっても、バックテストとフォワードテストの実績があれば販売登録は可能です。ただし販売する場合は自身が検証・責任を持てるロジックであることが前提になります。他者のプロンプトをそのまま使った場合の著作権リスクも注意が必要です。
著者情報: 金融工学出身。アルゴリズム取引ファンドでの運用経験後、FXシステム開発と教育コンテンツ執筆に従事。MQL5実装経験多数。
