この記事でできるようになること
- バックテストの結果をChatGPTに渡して、改善案と修正コードをもらえる
- 「修正 → コンパイル → 再テスト → 比較」のサイクルを1人で回せる
- 「1回に直すのは1か所だけ」のルールで、何が効いたかを見失わずに改善できる
準備するもの
- 第5章でバックテストを行い、レポートを保存したMT4
- ChatGPTにログインしたブラウザ(第3章で準備したもの)
- 第4章で使ったMetaEditor
- 結果を記録するメモ帳やExcel
手順
手順1 改善サイクルの全体像をつかむ
EAの改善は、次の1周を何度も回す作業です。
- レポートの数字を書き出す
- ChatGPTに渡して、原因と改善案をもらう
- 改善案のうち「1つだけ」を反映したコードをもらう
- MetaEditorに貼り付けてコンパイルする
- 第5章とまったく同じ条件で再テストする
- 前回の結果と比べて、良くなったか悪くなったかを記録する
- 良くなったら採用、悪くなったら元に戻して、次の改善案へ
大事なのは3番の「1つだけ」です。損切り幅と移動平均の期間を同時に変えて成績が上がった場合、どちらが効いたのか分かりません。逆に成績が下がった場合、どちらを戻せばよいのかも分かりません。1回に1か所だけ直せば、「この変更でこう変わった」と必ず言えます。
6-1-01.png手順2 レポートの数字を書き出す
第5章で保存したレポートをブラウザで開き、次の項目を書き写します。
- テスト条件: 通貨ペア、時間足、期間、モデル、スプレッド
- 結果: 純益、プロフィットファクター、最大ドローダウン(%)、総取引数、勝率、平均勝トレード、平均敗トレード
「平均勝トレード」「平均敗トレード」は、レポートの下の方にある「1回の勝ちの平均額」「1回の負けの平均額」です。要確認ChatGPTが原因を考えるうえで重要な手がかりになるので、忘れずに書き出してください。
6-1-02.png手順3 改善依頼のプロンプトを送る
ChatGPTで、第4章でEAを作ったときと同じチャットを開きます(前のやり取りを覚えているので、話が早くなります)。もしチャットが見つからなければ、新しいチャットを開き、最初にEAのコード全文を貼り付けてから、次のプロンプトを送ってください。
以下は本スクールのプロンプト雛形「3. バックテスト結果をもとに改善してもらうプロンプト」です。【 】の部分を、手順2で書き出した数字に置き換えます。
作成したEAをバックテストしました。結果は以下の通りです。
【テスト条件】
- 通貨ペア: 【USDJPY】 時間足: 【H1】
- 期間: 【2023/01/01〜2025/12/31】
- モデル: 全ティック スプレッド: 【20】
【結果】
- 純利益: 【-12,000円】
- プロフィットファクター: 【0.85】
- 最大ドローダウン: 【28%】
- 総取引数: 【210】
- 勝率: 【38%】
- 平均利益 / 平均損失: 【4,500円 / 3,200円】
この結果を踏まえて、
1. 何が原因で成績が悪いと考えられるか
2. 改善案を3つ、効果が高そうな順に
を教えてください。
改善は一度に1つだけ試したいので、まず最も効果が高そうな1つを反映した完全なコードを出力してください。
このプロンプトのポイントは、最後の1行です。「改善案を3つ」と頼みつつ、「コードに反映するのは1つだけ」と釘を刺しています。これを書かないと、ChatGPTは親切心から3つ全部を一度に反映したコードを出してくることがあります。
6-1-03.png手順4 回答を読んで「1つ目」を確認する
ChatGPTの回答は、おおむね次の形で返ってきます。
- 原因の分析(例: 「勝率38%に対して利確50pips/損切り30pipsでは、損切りが頻発しやすい」など)
- 改善案3つ(例: ①損切り幅の見直し、②トレンドフィルターの追加、③取引時間帯の制限)
- ①を反映した完全なコード
- 変更点の説明
ここで確認することは2つです。
- コードの変更が「1か所だけ」になっているか。説明文に「あわせて〜も変更しました」と書かれていたら、「①だけを反映して、ほかは元に戻してください」と頼み直します。
- コードが省略されていないか。途中に「// 以下同様」「// 省略」のような行があったら、「省略せずに完全なコードを出力してください」と頼み直します。
改善案の内容そのものは、理解できなくても構いません。「何を変えたのか」を一言でメモしておけば十分です(例: 「損切り30→45pips」)。
6-1-04.png手順5 コードを貼り替えてコンパイルする
- MetaEditorで、第4章で作ったEAのファイル(例: MA_Cross_Sample.mq4)を開きます。
- 元のコードを別名で残しておきます。 「ファイル」→「名前を付けて保存」で、
MA_Cross_Sample_v1.mq4のように保存してから、改善版を貼り付けるか、あるいは改善版をMA_Cross_Sample_v2.mq4として新規保存します。要確認元に戻せる状態を必ず作ってください。 - ChatGPTのコードをコピーし、全消ししてから貼り付けます(第4章と同じ手順です)。
- [F7] でコンパイルし、「0 error」を確認します。エラーが出たら第4章の「エラーが出たときの直し方」の手順で対処します。
6-1-05.png手順6 同じ条件で再テストする
ストラテジーテスターで、改善版のEAを選び直してテストします。
ここで最も重要なのは、テスト条件を1文字も変えないことです。通貨ペア、時間足、モデル、期間、スプレッド、初期証拠金、そして「パラメータの入力」の値まで、前回とまったく同じにします。条件が違えば、成績の変化がEAの改善によるものか、条件の違いによるものか分からなくなります。
改善によってinput変数が増えている場合(例: 新しく UseTimeFilter のような項目が追加された)は、ChatGPTの説明を見て、その項目だけ意図どおりの値になっているかを確認します。
テストが終わったら、レポートを保存します。ファイル名に v2 と入れておきます。
6-1-06.png手順7 前回と比べて記録する
改善前(v1)と改善後(v2)を表にします。数字は例です。
| 版 | 変更点 | PF | 最大DD | 総取引数 | 勝率 | 純益 |
|---|---|---|---|---|---|---|
| v1 | 初期版 | 0.85 | 28% | 210 | 38% | -12,000円 |
| v2 | 損切り 30→45pips | 1.05 | 24% | 205 | 44% | +9,000円 |
比べるときは、第5章の「見る順番」(グラフ → PF → 最大DD → 取引数 → 勝率)で見ます。
- PFが上がり、最大DDが下がった → 採用。v2を新しい基準にします
- PFは上がったが、最大DDも大きく上がった → 保留。「利益は増えたが危険も増えた」状態なので、ChatGPTに「最大DDを増やさずに済む方法はあるか」と聞き直します
- 悪くなった → 不採用。v1に戻し、改善案の②を試します
「悪くなった」ときも、その結果は無駄ではありません。「損切りを広げても効かなかった」という情報を次のプロンプトに添えれば、ChatGPTはより的確な案を出せます。
6-1-07.png手順8 サイクルを繰り返す・やめどきを知る
採用したv2を基準に、手順2からもう一周します。ChatGPTには、次のように続けて送ります。
損切りを45pipsにした結果、PF 1.05、最大DD 24%、総取引数205、勝率44%、純益+9,000円になりました。
次に、先ほどの改善案②を「1つだけ」反映した完全なコードを出力してください。
改善サイクルを回す回数の目安は、3〜5周です。理由は、直す箇所が増えるほど「過去のデータに合わせすぎたEA」になっていくからです。この落とし穴については、6-3で詳しく説明します。
また、改善のたびに必ず第5章の「結果を疑う視点」(特に前半/後半の分割検証)を行ってください。全期間の数字だけを追いかけると、知らないうちに過去に合わせすぎてしまいます。
6-1-08.pngつまずきポイント
- ChatGPTが複数の変更を同時に入れてきた: 「〜だけを反映し、ほかは元のままにしてください」と、変更を1つに絞るよう明示的に頼み直します。プロンプトの最後の1行を毎回つけるのが確実です。
- 改善版のコードで、元にあった機能が消えている: 長いやり取りの後半で起きやすい現象です。「元のコードにあった〇〇の機能が消えています。元のコードをもう一度貼るので、これに①だけを追加してください」と、コードを再度貼り付けて頼みます。
- 何度直しても成績が上がらない: そのEAのルール自体が今の相場に合っていない可能性があります。3〜5周試して改善しなければ、いったん区切りをつけ、第3章に戻って別のルール(RSI逆張りなど)で新しいEAを作る方が早いことも多いです。
- どの版がどの結果か分からなくなった: ファイル名に版番号(v1, v2…)を入れ、レポートのファイル名にも同じ番号を入れる。この2つを徹底するだけで防げます。
- 改善後の結果が良すぎる(PF 3.0など): 喜ぶ前に疑ってください。6-3で説明する「過剰最適化」の典型的なサインです。まず前半/後半の分割検証を行ってください。
次の記事
6-2 よくある改善パターン で、損切り幅・フィルター・トレーリングストップなど定番の改善方法と、MT4の最適化機能の使い方を学びます。