AI EA スクール
0記事中 0記事 読了
カリキュラム 第6章 AIで改善する 改善のサイクル
6-1

改善のサイクル

読み終わるまでの目安 約30分

この記事でできるようになること

  • バックテストの結果をChatGPTに渡して、改善案と修正コードをもらえる
  • 「修正 → コンパイル → 再テスト → 比較」のサイクルを1人で回せる
  • 「1回に直すのは1か所だけ」のルールで、何が効いたかを見失わずに改善できる

準備するもの

  • 第5章でバックテストを行い、レポートを保存したMT4
  • ChatGPTにログインしたブラウザ(第3章で準備したもの)
  • 第4章で使ったMetaEditor
  • 結果を記録するメモ帳やExcel

手順

手順1 改善サイクルの全体像をつかむ

EAの改善は、次の1周を何度も回す作業です。

  1. レポートの数字を書き出す
  2. ChatGPTに渡して、原因と改善案をもらう
  3. 改善案のうち「1つだけ」を反映したコードをもらう
  4. MetaEditorに貼り付けてコンパイルする
  5. 第5章とまったく同じ条件で再テストする
  6. 前回の結果と比べて、良くなったか悪くなったかを記録する
  7. 良くなったら採用、悪くなったら元に戻して、次の改善案へ

大事なのは3番の「1つだけ」です。損切り幅とRSIの期間を同時に変えて成績が上がった場合、どちらが効いたのか分かりません。逆に成績が下がった場合、どちらを戻せばよいのかも分かりません。1回に1か所だけ直せば、「この変更でこう変わった」と必ず言えます。

手順2 レポートの数字を書き出す

第5章で保存したレポートをブラウザで開き、次の項目を書き写します。

  • テスト条件: 通貨ペア、時間足、期間、モデル、スプレッド
  • 結果: 純益、プロフィットファクター、最大ドローダウン(%)、総取引数、勝率、平均勝トレード、平均敗トレード

「平均勝トレード」「平均敗トレード」は、レポートの下の方にある「1回の勝ちの平均額」「1回の負けの平均額」です。要確認ChatGPTが原因を考えるうえで重要な手がかりになるので、忘れずに書き出してください。

手順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つ全部を一度に反映したコードを出してくることがあります。

手順4 回答を読んで「1つ目」を確認する

ChatGPTの回答は、おおむね次の形で返ってきます。

  • 原因の分析(例: 「値動きが少ない時間帯のエントリーが多く、スプレッド分の負けが積み重なっている」など)
  • 改善案3つ(例: ①取引時間帯フィルターの追加、②トレンドフィルターの追加、③損切り・利確幅の見直し)
  • ①を反映した完全なコード
  • 変更点の説明

ここで確認することは2つです。

  1. コードの変更が「1か所だけ」になっているか。説明文に「あわせて〜も変更しました」と書かれていたら、「①だけを反映して、ほかは元に戻してください」と頼み直します。
  2. コードが省略されていないか。途中に「// 以下同様」「// 省略」のような行があったら、「省略せずに完全なコードを出力してください」と頼み直します。

改善案の内容そのものは、理解できなくても構いません。「何を変えたのか」を一言でメモしておけば十分です(例: 「取引時間帯フィルターを追加」)。

手順5 コードを貼り替えてコンパイルする

  1. MetaEditorで、第4章で作ったEAのファイル(例: RSI_Reversal_Sample.mq4)を開きます。
  2. 元のコードを別名で残しておきます。 「ファイル」→「名前を付けて保存」で、RSI_Reversal_Sample_v1.mq4 のように保存してから、改善版を貼り付けるか、あるいは改善版を RSI_Reversal_Sample_v2.mq4 として新規保存します。要確認元に戻せる状態を必ず作ってください。
  3. ChatGPTのコードをコピーし、全消ししてから貼り付けます(第4章と同じ手順です)。
  4. [F7] でコンパイルし、「0 error」を確認します。エラーが出たら第4章の「エラーが出たときの直し方」の手順で対処します。

手順6 同じ条件で再テストする

ストラテジーテスターで、改善版のEAを選び直してテストします。

ここで最も重要なのは、テスト条件を1文字も変えないことです。通貨ペア、時間足、モデル、期間、スプレッド、初期証拠金、そして「パラメータの入力」の値まで、前回とまったく同じにします。条件が違えば、成績の変化がEAの改善によるものか、条件の違いによるものか分からなくなります。

改善によってinput変数が増えている場合(例: 新しく UseTimeFilter のような項目が追加された)は、ChatGPTの説明を見て、その項目だけ意図どおりの値になっているかを確認します。

テストが終わったら、レポートを保存します。ファイル名に v2 と入れておきます。

手順7 前回と比べて記録する

改善前(v1)と改善後(v2)を表にします。数字は例です。

変更点 PF 最大DD 総取引数 勝率 純益
v1 初期版 0.85 28% 210 38% -12,000円
v2 取引時間帯フィルターを追加 1.32 19% 148 42% +54,000円

この例では、値動きの少ない時間帯を取引の対象から外したことで、PFが上がり、最大DDも下がりました。取引数は210回から148回に減っていますが、第5章の目安(100回以上)は保てています。フィルターは必ず取引数を減らすので、減りすぎていないかも合わせて確認してください。ここに挙げた数字はあくまで説明のための例であり、実際にどう変化するかはEAと相場によって異なります。

比べるときは、第5章の「見る順番」(グラフ → PF → 最大DD → 取引数 → 勝率)で見ます。

  • PFが上がり、最大DDが下がった → 採用。v2を新しい基準にします
  • PFは上がったが、最大DDも大きく上がった → 保留。「利益は増えたが危険も増えた」状態なので、ChatGPTに「最大DDを増やさずに済む方法はあるか」と聞き直します
  • 悪くなった → 不採用。v1に戻し、改善案の②を試します

「悪くなった」ときも、その結果は無駄ではありません。「時間帯フィルターでは効果が無かった」という情報を次のプロンプトに添えれば、ChatGPTはより的確な案を出せます。

手順8 サイクルを繰り返す・やめどきを知る

採用したv2を基準に、手順2からもう一周します。ChatGPTには、次のように続けて送ります。

取引時間帯フィルターを追加した結果、PF 1.32、最大DD 19%、総取引数148、勝率42%、純益+54,000円になりました。
次に、先ほどの改善案②を「1つだけ」反映した完全なコードを出力してください。

改善サイクルを回す回数の目安は、3〜5周です。理由は、直す箇所が増えるほど「過去のデータに合わせすぎたEA」になっていくからです。この落とし穴については、6-3で詳しく説明します。

また、改善のたびに必ず第5章の「結果を疑う視点」(特に前半/後半の分割検証)を行ってください。全期間の数字だけを追いかけると、知らないうちに過去に合わせすぎてしまいます。

つまずきポイント

  • ChatGPTが複数の変更を同時に入れてきた: 「〜だけを反映し、ほかは元のままにしてください」と、変更を1つに絞るよう明示的に頼み直します。プロンプトの最後の1行を毎回つけるのが確実です。
  • 改善版のコードで、元にあった機能が消えている: 長いやり取りの後半で起きやすい現象です。「元のコードにあった〇〇の機能が消えています。元のコードをもう一度貼るので、これに①だけを追加してください」と、コードを再度貼り付けて頼みます。
  • 何度直しても成績が上がらない: そのEAのルール自体が今の相場に合っていない可能性があります。3〜5周試して改善しなければ、いったん区切りをつけ、第3章に戻って別のルール(移動平均線のクロスなど)で新しいEAを作る方が早いことも多いです。
  • どの版がどの結果か分からなくなった: ファイル名に版番号(v1, v2…)を入れ、レポートのファイル名にも同じ番号を入れる。この2つを徹底するだけで防げます。
  • 改善後の結果が良すぎる(PF 3.0など): 喜ぶ前に疑ってください。6-3で説明する「過剰最適化」の典型的なサインです。まず前半/後半の分割検証を行ってください。

次の記事

6-2 よくある改善パターン で、損切り幅・フィルター・トレーリングストップなど定番の改善方法と、MT4の最適化機能の使い方を学びます。