【上級編】EAのパラメータ最適化 実践ガイド — AIと並走しながら進める
初級編・中級編を経て、お気に入りのインジケーターの組み合わせができたとします。
次の仕上げはパラメータの設定です。移動平均の期間をいくつにするか、RSIの閾値をどこに置くか——この数値次第でEAの挙動は大きく変わります。
パラメータの数値によって、チャートとの接近や交差タイミングが大きく変わります(画像クリックで拡大)。
さらに使用しているインジケーターが複数の場合、それぞれの兼ね合いも発生します。まず作業に入る前に、TradingViewでEAに組み込んだインジケーターをチャートに適用して、パラメータの数値をいろいろ変えながら目視で確認してみてください。数値の大小によってはシグナルが全く出なくなることもあります。そのレンジ感を掴んでから最適化に入ると、効率がよくなると思います。
この記事では、その最適化をAIに指示しながら進める手順をまとめます。自分でコードを書く必要はほぼありません。「実行する・結果を確認する・AIに相談する」が主な作業です。
いきなり完成版のEAの最適化に進む前に、まずはブラウザだけで使えるTradingViewで、インジケーターの組み合わせや売買条件を試してみるのもいいと思います。ある程度戦略の方向性が見えてから、MT4での最適化に入ると効率的です。
関連記事:TradingViewのストラテジーテスター完全ガイド
全体の流れ
STEP 1: MT4の最適化機能でアタリをつける
STEP 2: PythonでEAロジックを再現する
STEP 3: Optunaでパラメータを効率よく探索する
STEP 4: Walk-Forwardで過学習をチェックする
STEP 5: モンテカルロで安定性を確認する
STEP 6: 最適パラメータをMT4に戻す
STEP 1はMT4だけで完結します。STEP 2以降はAIにコードを書いてもらいながら進めます。
最重要:過学習とロバスト性について
作業に入る前に、この概念だけは頭に入れてください。
過学習とは、特定の期間のデータにパラメータが「フィットしすぎた」状態のことです。バックテストの成績は良くても、本番(未来のデータ)では全く機能しないことがある。
【過学習の典型例】
fast_ma = 17 のときだけ突出して良い成績
→ 「たまたまその期間に合っただけ」の可能性が高い
【ロバストな状態】
fast_ma = 14〜21 がどれも安定して良い成績
→ 本番でも機能しやすい
このガイド全体のゴールは「最高のパラメータを見つけること」ではなく「どの期間でも安定して動くパラメータを見つけること」です。
STEP 1:MT4の最適化でアタリをつける
目的
「どのパラメータ範囲が有望か」の大まかな感触をつかむ。ここで細かく追い込もうとしない。あくまでスクリーニング。
EAにカスタム評価関数を追加する
MT4のデフォルト評価(純利益の最大化)は過学習を招きやすいため、まずEAに評価関数を追加します。
AIへのプロンプト:
以下のMQL4コードに、MT4最適化用のカスタム評価関数(OnTester)を追加してください。
評価基準:
- トレード数が30未満の場合はスコア0を返す
- 「利益 ÷ ドローダウン × シャープレシオ」をスコアとする
- 純利益だけで評価しないようにしてほしい
[ここに自分のEAコードを貼り付ける]
AIが以下のような関数を追加してくれます。
double OnTester()
{
double profit = TesterStatistics(STAT_PROFIT);
double dd = TesterStatistics(STAT_EQUITY_DD_RELATIVE);
double trades = TesterStatistics(STAT_TRADES);
double sharpe = TesterStatistics(STAT_SHARPE_RATIO);
if(trades < 30) return 0;
return (profit / (dd + 1)) * sharpe;
}
MT4のストラテジーテスターで最適化を実行
MT4 → 表示 → ストラテジーテスター → 最適化タブ
設定:
├── モデル:コントロールポイント(速度優先)
├── 最適化:ON(遺伝的アルゴリズム)
├── 期間:最低3年以上のデータ
└── 最大化:カスタム最大化(OnTesterで設定したもの)
パラメータ範囲:
各パラメータの最小値〜最大値を広めに設定。ステップは粗くてOK。
結果の見方
最適化結果の一覧が表示されたら、一番良い1点だけを採用しない。上位10〜20件がどのあたりの数値に集まっているか、レンジを確認するのがこのステップのゴールです。
「fast_maは15〜25あたり、RSIは60〜70あたりが良さそう」という感触をつかめればOK。
STEP 2:PythonでEAロジックを再現する
Python自体の説明はここでは割愛します。インストールから環境構築まで、AIに「Pythonを使えるようにしたい」と伝えれば手順を教えてもらえます。
なぜPythonに移行するのか
| MT4の最適化 | Pythonでの最適化 |
|---|---|
| 評価基準がブラックボックス | 評価指標を自由にカスタマイズ |
| 遅い | 高速(並列処理可能) |
| 可視化が限定的 | グラフ・ログが自由自在 |
| 外部ライブラリ使えない | OptunaなどAIライブラリをフル活用 |
事前準備
pip install pandas numpy optuna matplotlib
MT4からヒストリーデータをCSVエクスポートします(MT4 → ツール → ヒストリーセンター → エクスポート)。
EAロジックをPythonで再現する(AIに依頼)
これが最も重要な作業です。自分で書く必要はありません。
AIへのプロンプト:
私はMT4用のEAを持っています。
このEAのロジックをPythonのバックテストシミュレーターとして再現してください。
【EAの仕様】
- 使用インジケーター:
1. 移動平均(MA):期間パラメータあり
2. RSI:期間・閾値パラメータあり
3. ボリンジャーバンド:期間・偏差パラメータあり
4. MACD:各期間パラメータあり
5. ATR:期間パラメータあり(ロット計算に使用)
- エントリー条件(例):
MAがゴールデンクロス かつ RSIが60以上 かつ BBの上バンドを価格が上抜け
- エグジット条件:
SL: ATRの2倍 / TP: ATRの3倍
- ロット:固定0.1
【データ形式】
MT4からエクスポートしたCSVで、列は Date, Time, Open, High, Low, Close, Volume です。
【お願いしたいこと】
1. 上記ロジックを再現するPythonクラス(EASimulator)を書いてください
2. パラメータを引数として受け取れる構造にしてください
3. 以下の指標を計算して返す get_metrics() メソッドも含めてください
- 総利益(pips)
- 勝率
- プロフィットファクター
- 最大ドローダウン
- シャープレシオ
- 総合スコア(利益/DD × シャープレシオ)
💡 INFO
MQL4のコードをそのまま貼り付けて「これをPythonに変換して」でもOKです。自分のEAのエントリー・エグジット条件をできるだけ正確に伝えることが精度に直結します。
動作確認
AIが書いてくれたコードをPythonで実行して、MT4のバックテスト結果と大まかに一致するか確認します。完全一致は難しい(スプレッドの扱いやバー確定タイミングの差異など)ため、±20%程度の誤差は許容範囲です。
STEP 3:Optunaでパラメータを効率よく探索する
Optunaは「有望なパラメータの範囲に集中して探索する」ライブラリです。総当たりより圧倒的に少ない試行回数で良い答えに辿り着きます。
データを学習用とテスト用に分ける(重要)
# 5年分のデータがある場合
df_train = df.iloc[:len(df)*4//5] # 最初の80%(最適化に使う)
df_test = df.iloc[len(df)*4//5:] # 最後の20%(後で検証用)
⚠️ WARNING
テスト用データは最適化に絶対に使わない。これが守れないと過学習チェックの意味がなくなります。
Optunaの最適化を実行する
AIへのプロンプト:
先ほど作成したEASimulatorを使って、
Optunaでパラメータ最適化するコードを書いてください。
最適化するパラメータと探索範囲:
- MA期間:5〜30(整数)
- RSI期間:7〜21(整数)
- RSI閾値:50〜75(小数)
- BB期間:10〜30(整数)
- BB偏差:1.5〜3.0(小数)
- ATR期間:7〜21(整数)
- SL倍率(ATRの何倍か):1.0〜3.0(小数)
- TP倍率(ATRの何倍か):1.5〜5.0(小数)
最適化対象:df_train(学習用データ)のみ
試行回数:500回
評価指標:get_metrics()のscoreを最大化
また以下も含めてください:
- 最良パラメータの表示
- パラメータ重要度のグラフ表示(plot_param_importances)
結果の見方
パラメータ重要度グラフで確認すること:
- 重要度が高いパラメータ → そこが本当に効いている要素
- 重要度が低いパラメータ → そのインジはあまり機能していない可能性
ロバスト性チェック(周辺パラメータの確認)
AIへのプロンプト:
Optunaで見つかった最良パラメータの「周辺の値」でも
安定した成績が出るか確認したいです。
MA期間が18が最良だった場合、
14〜22の範囲で1刻みで実行して、スコアと主要指標をグラフで表示してください。
✅ ロバスト:周辺パラメータでも成績が安定 → 採用OK
❌ 過学習疑い:その1点だけ突出して良い → 採用しない
STEP 4:Walk-Forwardで過学習をチェックする
Walk-Forwardとは「最適化した期間の外(未来)でも機能するか」を疑似的に検証する手法です。これが一番重要なステップです。
Window 1: [─── 最適化(2年)───][─テスト(6ヶ月)─]
Window 2: [─── 最適化(2年)───][─テスト(6ヶ月)─]
Window 3: [─── 最適化(2年)───][─テスト(6ヶ月)─]
各テスト期間の結果を全部積み上げて総合評価
AIへのプロンプト:
先ほどのEASimulatorとOptunaを使って、
Walk-Forward Optimizationを実行するコードを書いてください。
設定:
- 最適化ウィンドウ:10000バー
- テストウィンドウ:2000バー
- 各ウィンドウのOptuna試行回数:200回
- 全ウィンドウ終了後に表示:
- 各ウィンドウのテスト成績(スコア・PF・勝率)
- 全期間を通じた合計利益(pips)
- プラスになったウィンドウの割合
判定基準
| 指標 | 最低ライン | 理想 |
|---|---|---|
| プラスウィンドウ率 | 60%以上 | 75%以上 |
| 平均プロフィットファクター | 1.3以上 | 1.6以上 |
60%を下回る場合は、EAのロジック自体を見直すサインかもしれません。インジケーターの組み合わせが本質的に機能していない可能性も考えられます。
STEP 5:モンテカルロで安定性を確認する
トレードの順序をランダムにシャッフルして1000回繰り返し、「最悪のケースでどのくらいのドローダウンになるか」を確認します。「このトレード履歴がたまたま良かっただけでないか」を統計的に検証します。
AIへのプロンプト:
Walk-Forwardのテスト期間全体のトレード結果を使って、
モンテカルロシミュレーションを実行してください。
設定:
- シミュレーション回数:1000回
- 各回でトレード順序をランダムにシャッフル
- 表示してほしい情報:
- 最終利益の分布(ヒストグラム)
- 最大DDの分布
- 利益の5パーセンタイル(悪いケース)
- 最大DDの95パーセンタイル(最悪に近いケース)
判定基準
✅ 採用OK:
利益の5%ile がプラス
最大DDの95%ile が資金の20〜30%以内
❌ 要見直し:
悪いケースでも利益がプラスにならない
最大DDが資金の50%を超えるシナリオが多い
STEP 6:最適パラメータをMT4に戻す
MT4の.setファイルを自動生成する
AIへのプロンプト:
Optunaで見つかった最良パラメータを、
MT4のストラテジーテスターで読み込める .set ファイルとして出力するコードを書いてください。
私のEAの変数名は以下です:
[EAの変数名リストを貼り付ける]
フォワードテスト(デモ口座)
最終的にMT4のデモ口座で最低3ヶ月は動かす。
チェックポイント:
- バックテストと近い勝率・PFが出ているか
- 想定外の大きなドローダウンが発生していないか
- トレード頻度が想定通りか
よくある詰まりポイントとAIへの相談テンプレート
Pythonのエラーが出た
以下のエラーが出ました。修正してください。
[エラーメッセージをそのまま貼り付ける]
実行したコード:
[コードを貼り付ける]
MT4とPythonの結果が大きく違う
MT4のバックテストとPythonシミュレーターの結果が以下の通り異なります。
MT4:勝率XX%、PF X.XX、総利益 XXX pips
Python:勝率XX%、PF X.XX、総利益 XXX pips
考えられる原因と修正方法を教えてください。
なお、私のEAのエントリー条件は以下です:
[条件を貼り付ける]
Walk-Forwardのプラス率が低い
Walk-Forwardを実行した結果、プラスウィンドウ率がXX%でした。
EAのロジック自体に問題がある可能性がありますか?
それともパラメータの探索範囲や最適化設定の問題でしょうか?
各ウィンドウの結果:
[結果を貼り付ける]
どのインジが本当に効いているか確認したい
Optunaのパラメータ重要度グラフを見ると、〇〇インジの重要度が低いようです。
このインジを外したバージョンとのA/Bテストをしたいです。
コードを書いてください。
判断基準まとめ
| ステップ | 確認指標 | 最低ライン | 理想 |
|---|---|---|---|
| STEP 3 | 周辺パラメータのロバスト性 | 周辺でも安定 | 幅広く安定 |
| STEP 4 | Walk-Forwardプラス率 | 60%以上 | 75%以上 |
| STEP 4 | 平均PF | 1.3以上 | 1.6以上 |
| STEP 5 | 利益5%ile | プラス | 余裕でプラス |
| STEP 5 | 最大DD 95%ile | 資金の30%以内 | 資金の20%以内 |
| STEP 6 | フォワードテスト期間 | 3ヶ月以上 | 6ヶ月以上 |
ここまで自力で進めると、最後は「AIが吐いたコードの細かいエラー修正」「MT4/MT5への反映手順」「テスト条件の詰め」に時間を取られがちです。
本サイトでは考え方と手順の全体像を解説していますが、実装を最短で進めたい場合は、作業を道具化したプロンプトを使う方がブレにくくなります。
最後に
- STEPを順番に飛ばさないことをおすすめします。 特にSTEP 4(Walk-Forward)はショートカットすると意味が薄れます。
- AIへのプロンプトにはMQL4コードをそのまま貼るのが確実です。 具体的な情報を入れるほど精度が上がります。
- バックテストの成績が良すぎる場合は過学習を疑ってみてください。 PF 3.0以上・勝率80%以上が出たときは特に。
- フォワードテストはできれば省略しないでください。 バックテストがどれだけ良くても、デモ口座での確認を挟む方が安心です。
初級編からここまで一気に読んで、「想像より大変そう」と思いましたか?
そういう場合は、AIのさらなる進化を待つという選択肢もあります。ツールはこれからも改善されていくので、もっとシンプルな指示で同じことができるようになる日は来るでしょう。
ただ、AIが直接「あなたに最適な戦略」を提案してくれるようになるには、構造的な壁があります。
一つは、現時点で有効な戦略の多くは公開されていないという問題です。AIは公開情報から学習しますが、実際に機能している戦略はほとんど非公開です。公開された時点で陳腐化しているか、アルファが消えているケースがほとんど。
もう一つは、AIが出す共通の戦略を多くの人が一斉に使うと、利益幅が必然的に縮むという問題です。同じシグナルで同じ方向に注文が集まれば、エッジは消えていきます。
結局のところ、独自の戦略を持つことの価値はしばらくどころか、継続的に残り続けると思います。 AIはあくまで「あなたが考えた戦略を実装・検証する道具」として使うのが、今のところ最も合理的な使い方ではないでしょうか。
もしトレード自体が未経験であれば、まず裁量トレードから試してみるのもいいと思います。TradingViewでいろんなインジケーターを眺めていると、チャートを後から振り返るたびに「あの時買っていれば」という場面が何度も出てきます。
その「あの時買っていれば」を自動的に実行するのがEAです。
元々FXを裁量でやっていた方にとっては、AIの登場は過去最大の追い風と言えると思います。
さらに効率よく、高精度なEAを完成させたい方へ
複数のインジケータを組み合わせた時のロジックの構築方法を含めた、AIによるEA作成の精度を高める専用プロンプトをダウンロードできます。
随時アップデートも行なっています。最速で始めたい方はこちらからプロンプトを受け取ってください。
関連記事
- AIで自分だけの最強EAをつくろう — EA開発の全体像
- 【初級編】ボリバン+移動平均線でEAを作ってみよう — AIに日本語で売買条件を伝える方法
- 【中級編】説明できないインジでもEA化できる — Pine Script丸投げでEA化する方法
- AIが出したコードにエラーが出た時のデバッグプロンプト集 — Pythonエラーにも使えます
本記事で紹介する手法は教育目的で作成されたものです。実際の取引で利益を保証するものではありません。EAの運用は必ずデモ口座で十分にテストした上で、自己責任で行ってください。FX取引にはリスクが伴います。
次のステップ
まずデモで動作確認 → OKなら本番運用、が安全です。
デモ口座でEAを回す手順関連記事
TradingViewストラテジーテスターの使い方 — AI活用バックテスト
MT4より手軽にバックテストできるTradingViewのストラテジーテスターの使い方を解説。AIにPine Scriptを書かせて結果を確認するまでの手順を紹介。
TradingViewのアラート機能をEAの代わりに使う方法
EAを作らなくてもTradingViewのアラート+Webhookで半自動売買が実現できます。設定手順とEAとの使い分けを具体的に解説。
TradingViewの無料 vs 有料、EA開発に必要なプランはどれ?
EA開発のワークフロー別に、TradingViewの各プランで何ができるかを具体的に解説。アイデア出し・バックテスト・アラート連携など段階ごとに必要なプランを明確化。
複数条件を組み合わせたEAの作り方 — RSI+MACD+移動平均線の実例
単一インジのEAからステップアップ。AND/OR結合の考え方と、RSI・MACD・SMA200を組み合わせた実例プロンプト・バックテスト比較を解説します。