ChatGPT・Claudeで作ったEAを本番前に確かめるチェックリスト|コードとテスト条件の見直し方【2026年版】
ChatGPTやClaudeにEAのコードを書いてもらうことは、いまでは珍しくありません。コンパイルが通って、バックテストのグラフも右肩上がりなら、そのまま本番口座で動かしたくなります。
ただ、コンパイルが通ることは、コードが言語の規則に合っているという確認で、狙ったとおりに売買することまでは約束しません。バックテストの成績も、あくまでそのテストの条件の中での結果です。
AIが書いたEAを本番に載せる前に、コードとテストの条件の2つの面から見直す手順を整理します。順番は、コード、テスト条件、最適化、そしてデモ口座と小ロットでの確認です。
成績表の数値(PFやドローダウン)の読み方は、バックテスト・フォワードテストの読み方ガイドにまとめています。EAが動かないときの切り分けは、EAが動かないときのチェックリストをどうぞ。
今回の対象は、動くには動くものの、信頼してよいかを見極めたいEAです。
この記事でわかること
- AIが書いたEAを、コードの面から見直すときの着眼点
- バックテストの条件(ティック・スプレッド・遅延・手数料)の見直し方
- 過剰最適化を疑うときの確認のしかた
- デモ口座と小ロットで、何を記録して何を見るか
- 本番前に使える一覧表
⚠️ 本記事は、過去の検証結果が将来の成績を保証するものではないことを前提にしています。EAによる自動売買には元本を失うリスクがあります。実際の取引条件は、ブローカーの口座種類や使用環境(VPSなど)によって変わります。
結論:「動く」と「信頼できる」は分けて確かめる
AIが書いたEAを見直すときは、次の4つの面を順に確かめるのがおすすめです。どの面も、コードを一行ずつ読めなくても進められます。
| 確かめる面 | 見るところ | 見つかりやすいこと |
|---|---|---|
| ① コード(足の使い方) | シグナルに使う足が、確定した足か | 形成中の足の値で判断してしまい、テストと本番で結果が食い違う |
| ② コード(発注まわり) | 注文の結果を受け取って、失敗時の動きがあるか | 注文が通っていないのに、通ったつもりで動き続ける |
| ③ テスト条件 | ティック・スプレッド・遅延・手数料の設定 | 理想的な条件でしか出ない成績を見ている |
| ④ 最適化 | 期間を分けて確かめたか | 過去の一部の期間にだけ合わせ込んでいる |
このあとの節で1つずつ説明します。①〜④を終えたら、デモ口座と最小ロットで実際の動きを記録します。
前提:この記事の範囲
テスターや発注関数の仕様は、MetaQuotes社が公開しているMT5のヘルプとMQL5のドキュメント(2026年11月時点)に基づいて書いています。MT4(MQL4)でも考え方は同じですが、設定項目の名前や細かな挙動が違うことがあります。MT4で試す方は、お使いのテスターの設定画面と公式ヘルプで確かめてから進めるのが安心です。
どのAIで作ったコードでも、確認する点は変わりません。そのため、AIごとの違いや、勝てるEAの作り方には触れず、見直しの手順だけに絞ります。
① コード:シグナルに「形成中の足」を使っていないか
時系列の「0番」は、まだ終わっていない足
2026年11月時点のMQL5のドキュメントでは、時系列の配列で番号0にあたるのは、最新の、まだ完了していない足だと説明されています。日足なら、番号0が今日の足(途中)、番号1が昨日の足です。
つまり、エントリーの条件に番号0の値を使うと、その足が確定する前の途中の値で判断することになります。途中の値は、ティックごとに変わります。同じ足の中で条件が成立したり消えたりするため、バックテストとリアルタイムで売買のタイミングが食い違う原因になりえると考えられます。
確かめるのは、次の2点です。
- エントリーや決済の条件に使っている足の番号が、確定した足(1以降)になっているか
- 番号0を使っているなら、それが意図した設計か(たとえば現在の価格に反応させたいなど)
配列の並びの向きを明示しているか
MQL5のドキュメントによると、配列の並びの向きは既定では左から右です。向きに依存しないように、使う配列にはArraySetAsSeries()を無条件に呼んで向きを指定するよう勧められています。
向きを取り違えると、「過去の足」のつもりで新しい足を読んでしまうことがあります。コードが読めない場合は、AIに次のように聞いてみてはいかがでしょうか。
このEAで、売買の条件に使っている足の番号(shiftやindex)を、すべて一覧にしてください。0を使っている箇所があれば、その理由も書いてください。
後から値が変わる指標を使っていないか
過去の足の値が、後から書き換わる性質の指標をシグナルに使っていると、バックテストでは確定後の値が見えます。リアルタイムでは、その時点で見えなかったはずの値で判断した形になります。使っている指標がそのような性質かどうかは、指標の説明で確かめておくと安心です。
② コード:発注の結果を受け取っているか
OrderSendがtrueでも、約定したとは限らない
MQL5のドキュメントによると、OrderSend()がtrueを返しても、取引が成立したことにはなりません。trueは、注文の形式の確認を通って、サーバーに受け付けられたという意味です。結果は、サーバーの応答コード(retcode)をまず見るよう説明されています。
また、送信前にOrderCheck()で、証拠金が足りるかなどを確かめられます。
戻りコードの例を、いくつか挙げます。
| コードの名前 | 意味 |
|---|---|
| TRADE_RETCODE_REQUOTE | リクオート(価格の再提示) |
| TRADE_RETCODE_INVALID_STOPS | ストップ(損切り・利確)の指定が不正 |
| TRADE_RETCODE_NO_MONEY | 証拠金が足りない |
| TRADE_RETCODE_MARKET_CLOSED | 市場が閉まっている |
| TRADE_RETCODE_CLIENT_DISABLES_AT | 端末側で自動売買が無効 |
注文の結果を見ていないコードは、失敗してもEAが気づけません。「ポジションを持っているつもりで動く」「同じ注文を何度も出す」といったことが起きうると考えられます。リクオートなど約定まわりの用語は、海外FXの約定とはでも整理しています。
MT4用かMT5用かを最初に指定する
MQL5のOrderSend()は、注文内容を構造体で渡し、結果も構造体で受け取る形です。MQL4のOrderSend()は、銘柄・数量・価格などを個別の引数で渡し、注文番号を返す形で、書き方が違います。そのため、AIにコードを頼むときは「MT5用(MQL5)」か「MT4用(MQL4)」かを最初に指定しておくのが無難です。
コンパイルのエラーを直してもらうときは、直した前後の差分を出してもらいます。エラーを消すついでに、売買のロジックまで変わっていないかを見るためです。
発注まわりで、ほかに確かめたい点
- ロットの計算が、口座の最小ロットや刻みに合わせて丸められているか
- 損切りが入っているか(入っていないなら、それが意図した設計か)
- 同時に持つポジションの上限があり、同じ条件で重ねて入らないか
- スプレッドが広がったときや、指定した損失に達したときに止まる仕組みがあるか
ロットと損失額の関係は、ロット管理・リスク管理入門で基本から確認できます。
③ テスト条件:理想的な条件で測っていないか
同じEAでも、テスターの設定で成績は変わります。MT5のヘルプには、設定の意味が次のように書かれています。
ティックの生成方法
| モード | 内容 |
|---|---|
| Every tick | 分足のデータからティックをシミュレーションで作る |
| Every tick based on real ticks | ブローカーが蓄積した実際のティックを使う |
ここで注目したいのはスプレッドです。実際のティックでは、分足の途中でスプレッドが変わりえます。一方、シミュレーションのティックでは、その分足に記録された固定のスプレッドが使われます。固定のスプレッドを前提にしたテストは、スプレッドが広がりやすい時間帯の成績を実際より良く見せる可能性があります。
また、「Every tick based on real ticks」を選んでも、ティックのデータが無い分足は、シミュレーションで補われます。「実際のティックで測った」と書いてあっても、全期間がそうなっているとは限りません。結果を見るときに、頭に置いておくと安心です。
約定の遅延
ヘルプによると、テスターには発注から約定までの遅延をまねる設定があります。
| 設定 | 内容 |
|---|---|
| No Delay | すべて要求した価格で約定し、リクオートも起きない。理想的な条件の確認用 |
| Random Delay | 0〜9秒の遅延を乱数で選ぶ。9が出たら、さらに0〜9秒を足す(0〜8秒が90%、9〜18秒が10%) |
| Fixed Delay | 決まった遅延、またはサーバーまでのpingに合わせた遅延 |
即時執行の口座では、要求価格と約定価格の差が注文の許容値(deviation)を超えると、リクオートが返ります。テスターでも、これを試せます。
No Delayで良い成績だったEAは、Random Delayでやり直すと、成績がどう変わるかが分かります。大きく崩れるなら、約定の遅れに弱い作りかもしれません。
手数料とスプレッド
MT5のテスターには、手数料を自分で指定する欄のほかに、使っている口座の手数料設定をそのまま使う欄(Use predefined commissions)があると説明されています。手数料がかかる口座種類では、テストの損益に手数料が入っているかを、1回の取引で確かめておきたいところです。
スプレッドは、海外FXのスプレッドの読み方のとおり、見かけの数値と実際の取引コストが違うことがあります。テストに使った値が、実際に使う口座のものと合っているか、見ておきましょう。
時間のずれにも注意
バックテストのデータは、サーバー時間で並んでいます。時間帯でエントリーを制限するEAでは、サーバー時間と日本時間のずれが結果に影響します。詳しくはMT4/MT5のサーバー時間とGMTオフセットを参照してください。
④ 最適化:過去の一部の期間に合わせすぎていないか
パラメータを最適化すると、過去のデータには良く合います。ただ、合わせ込みすぎると、未来の相場では力を出せないことがあります。確かめる方法は2つあります。
期間を分けて、後半で確かめる
MT5のテスターには、テスト期間を前半と後半に分けるフォワード(Forward)の設定があります。期間を半分、3分の1、4分の1、または指定した日付で分けられます。前半でパラメータを選び、後半で同じ設定のまま成績を見る、という使い方です。
前半では良いのに、後半で成績が大きく落ちるなら、前半に合わせすぎている可能性があります。
設定値を少し動かして、崩れないか見る
選んだパラメータの近くの値(たとえば移動平均の期間を少し増減させる)でもテストしてみます。ほんの少し動かしただけで成績が大きく変わるなら、偶然その値が合っていただけかもしれません。
取引回数が少ない場合や、PFが極端に高い場合の見方は、バックテスト・フォワードテストの読み方ガイドにまとめています。
⑤ デモ口座と最小ロットで、動きを記録する
ここまでの確認が終わったら、実際の口座で動かして確かめます。最初はデモ口座、次に最小ロットの実口座という順番がおすすめです。デモ口座の使い方はデモ口座の使い方と活用法にあります。
動かしている間に、次のことをログに残します。
| 記録するもの | 見る理由 |
|---|---|
| 発注した時刻と、条件に使った足の番号 | ①で確かめた足の使い方が、実際の動きと合っているか |
| 注文の結果コード(retcode) | ②で確かめた失敗時の動きが、実際に働いているか |
| 要求した価格と、約定した価格 | ③のテストで想定した遅延やスリッページと比べるため |
| スプレッド | テストで使った値と比べるため |
期間には、経済指標の発表や週明けの窓開けを含めると、実際の相場での動きが分かります。
- 指標時の動き:経済指標時の海外FX取引の注意点
- 週明けの窓開け:海外FXの週末ギャップ
- EAを常時動かす環境:EA運用向けVPS比較
⑥ AIにコードの修正を頼むときのコツ
AIは、修正を頼むと、頼んでいない部分まで書き換えることがあります。次の頼み方にしておくと、確認しやすくなります。
- 修正前後の差分だけを出してもらう
- 「売買のロジックは変えない」と、はっきり指定する
- どの行を、なぜ変えたかを、一覧にしてもらう
- 直したら、テストをやり直す(前の結果は引き継がない)
コードを読めなくても、「この変更で、売買の条件は変わりますか」とAIに聞き、答えを差分と照らして確かめることはできます。
本番前のチェックリスト
| 面 | 確認すること | 確認 |
|---|---|---|
| コード | エントリー・決済の条件に使う足が、確定した足(1以降)になっている | ☐ |
| コード | 番号0の足を使う箇所があれば、その理由が説明できる | ☐ |
| コード | 配列の向きを明示している | ☐ |
| コード | 後から値が変わる指標を、シグナルに使っていない(または性質を理解している) | ☐ |
| コード | 注文の結果コードを見て、失敗時の動きがある | ☐ |
| コード | ロットが最小ロットや刻みに合っている | ☐ |
| コード | 損切り、ポジション上限、停止の仕組みがある | ☐ |
| テスト | ティックの生成方法を確認し、可能なら実際のティックでもテストした | ☐ |
| テスト | スプレッドが、実際に使う口座と合っている | ☐ |
| テスト | Random Delayでもテストし、成績の変化を見た | ☐ |
| テスト | 手数料がテストの損益に反映されている | ☐ |
| 最適化 | 期間を分け、後半の成績を確認した | ☐ |
| 最適化 | パラメータを少し動かしても、成績が極端に崩れない | ☐ |
| 実地 | デモ口座で、ログを取りながら動かした | ☐ |
| 実地 | 最小ロットで、約定価格やスプレッドを記録した | ☐ |
| 修正 | AIの修正は、差分で受け取り、毎回テストをやり直した | ☐ |
よくある質問
コードが読めなくても、チェックできますか?
読めなくても、AIに質問する形で進められる項目は多くあります。たとえば「売買の条件に使っている足の番号を一覧にして」「注文の結果コードを見ている箇所はどこですか」と聞き、答えを自分でも確かめます。確かめきれない部分は、デモ口座のログで動きを見てから判断すると安心です。
小ロットなら、確認しなくても大丈夫ですか?
小ロットは損失の大きさを抑えますが、注文の失敗に気づけないといった作りの問題は、ロットに関係なく起こります。小ロットは、確認の代わりではなく、確認の続きとして使うのがおすすめです。
どのAIで作ったコードでも、同じ確認が必要ですか?
はい。AIの種類にかかわらず、コンパイルが通ることと、意図どおりに動くことは別です。この記事のチェックは、AIの種類を問わず使えます。
まとめ
AIが書いたEAは、動くかどうかだけでなく、信頼してよいかを分けて確かめることが大切です。
- コードでは、シグナルに使う足と、注文の結果の受け取り方を見る
- テストでは、ティック・スプレッド・遅延・手数料の設定を見る
- 最適化では、期間を分けて後半で確かめる
- そのあと、デモ口座と最小ロットで、ログを取りながら動かす
EAの選び方や導入は、次の記事も合わせてどうぞ。

