FX

MT4のバックテスト結果がおかしい原因とFX自動売買の確認手順

バックテストの比較を行う二つの画面と虫眼鏡のイメージ

同じEAを使い、同じ期間を指定したはずなのに、MT4のバックテスト結果がおかしい。前回と損益や取引回数が違うと、EAそのものに問題があるのか迷いますよね。

まずは結果を修正しようとせず、テスト条件を記録し、最初に違いが現れた取引を探してください。EAの版、入力値、銘柄、期間、スプレッド、価格データなどは、それぞれ異なる原因になります。FX自動売買の検証は、条件がそろっていることを確かめてから結果を解釈するのが基本です。

この記事では、取引自体が始まらない場合と、実行できるのに結果が変わる場合を分けて、原因を一つずつ切り分けます。過去のテスト結果が一致しても、将来の利益や実運用での同じ約定を保証するものではありません。

この記事のポイント
  • まず再現に必要なテスト条件を控える
  • 入力値と銘柄の違いを価格データより先に確かめる
  • 最初の差が生じた取引を照合して原因を絞る
  • 本番での約定や費用はデモでも別に確認する

MT4のバックテスト結果がおかしいときにFX自動売買の条件を確認

テスト条件を確認する画面とチェックリストのイメージ
説明用の生成イメージです。実際の画面や検証結果ではありません。

最初に症状を分けて記録する

結果がおかしいといっても、テストを開始できない、取引がゼロになる、以前より取引回数が増減する、取引回数は同じなのに損益が変わるなど、症状はさまざまです。症状を分けると、どこから調べるべきかが分かります。

開始できない場合は、テスターの操作、EAの選択、初期化エラー、必要なデータの有無を先に調べます。取引がゼロでも、設定した条件が期間内で一度も成立しなかった可能性があります。取引がないという事実だけで、ソフトの故障と断定しないでください。

取引が発生していて結果が異なる場合は、損益の合計だけでなく、最初に取引時刻や価格が食い違った箇所を探します。最初の注文から違うのか、途中までは同じで決済後に差が出たのかによって、調査の入口が変わります。

以前の結果が残っている場合は、レポート、取引一覧、EAの入力値とテスターの設定をセットで控えます。残っていない場合は、現在の条件を基準にして再テストし、以後の変更を一項目ずつ記録しましょう。値を何度も変更してから原因を探すと、何が効いたのか判断できません。

EAのファイルと入力値をそろえる

同じ名前のEAでも、中身が同じとは限りません。更新や再コンパイルをしていれば、表示名が同じでも以前と別の版になっている場合があります。テスターに選んだファイル名、変更した日時、提供元の版情報を確認しましょう。

次に「エキスパート設定」の入力値を見ます。エントリー条件、ロット、稼働時間、損切り、利確、フィルターの値が一つ違うだけでも、取引の有無や結果が変わり得ます。以前保存した設定ファイルがあるときは、読み込んだ後の表示値まで照合します。

設定ファイルの名前が同じでも、その中身が同じとは限りません。また、初期値に戻す操作を行うと、それまでの入力値が変わることがあります。変更前の値を控えたうえで、元の値を一つずつ確認する方が安全です。提供元のEAは、設定値の意味や対応する通貨ペアを提供元の説明でも確かめてください。

二つの設定を比較する画面とチェックリストのイメージ
説明用の生成イメージです。実際の画面や検証結果ではありません。

銘柄・時間足・期間を一致させる

通貨ペアは、EURUSDのような基本名だけでなく、業者が付ける接尾辞も含めて確認します。同じ通貨を表すように見えても、銘柄の取引条件や価格データが同一とは限りません。時間足も、EAを稼働させたい時間足とテスターで選択した時間足が一致しているかを見ます。

期間は開始日と終了日だけでなく、期間指定のチェックが有効かどうかも控えます。範囲を広げたつもりでも、選択した銘柄や時間足の価格履歴がその期間を十分にカバーしていなければ、想定どおりの比較にはなりません。結果の最初と最後の取引時刻も、指定した範囲と照合しましょう。

EAが別の時間足や別銘柄を参照する設計なら、テスト対象の足だけでなく参照先のデータも必要になる場合があります。どのデータを使うかはEAの実装に依存します。取引時間を条件にするEAでは、サーバー時刻や夏時間の扱いも、同じ条件で比較できているか確認する材料です。

モデリング方法と価格データを確かめる

MT4のテスターには、全ティック、コントロールポイント、始値のみというモデリング方法があります。選択した方法によって足の途中の値動きの扱いが異なるため、同じEAでも結果が変わることがあります。前回と今回で方式が同じか、まず設定画面で確認してください。

始値のみは、確定した足を基準に判定する仕組みの簡易確認に使えます。一方、足の途中の価格変化に反応するEAでは、それだけで実際の挙動を十分に評価できません。全ティックも過去の値動きを完全に再現する保証ではなく、利用できる下位時間足データに依存します。

MetaTrader 4のテスター設定に関する公式説明では、テスト期間を下位時間足のデータが十分に覆っていない場合、全ティックの精度に注意するよう案内しています。データの提供元、対象期間、欠けている区間を確認し、比較対象と同じ履歴かを調べましょう。

欠けた価格履歴を表す紙テープとチャートのイメージ
説明用の生成イメージです。実際の画面や検証結果ではありません。

レポートのモデリング品質も確認します。ただし、数値だけで結果の正しさや将来の利益を判断することはできません。公式ヘルプでは「始値のみ」を使うと品質がn/aと表示されると説明しています。n/aを見ただけで、直ちにデータ破損と決めつけないことが大切です。

履歴データを取得し直す前には、今のテスト条件と対象データを確認し、運用中の環境を不用意に変更しないでください。データの保存場所やインポート手順は、MT4ヒストリカルデータの入れ方を参考にできます。既存ファイルを削除すれば必ず改善するわけではありません。

スプレッドと口座条件の差を確認する

スプレッドが異なると、同じ価格履歴でも取引結果は変わり得ます。MT4の標準テスターは、既定ではテスト開始時の現在のスプレッドを使ってAsk価格をモデル化します。固定値を指定することも可能です。前回が現在値で、今回は別の値だった場合、入力画面だけを見ても差に気づきにくいことがあります。

比較するときは、表示される単位にも注意しましょう。ポイントとpipsは同じ意味ではなく、銘柄の桁数によって換算が異なります。まず銘柄の仕様を確認し、比較する二つのテストで同じ単位・数値を使っているかを確かめます。数字を小さくして成績を良く見せることが目的ではありません。

初期証拠金、口座通貨、ロット、レバレッジや銘柄の取引条件にも目を向けます。取引可能な数量や損益の表示に関わるためです。持ち越す取引ではスワップやその他の費用条件も比較対象になります。業者やテスト環境ごとの取り扱いは異なり得るので、条件を確認せずに一つの要因へ決めつけないでください。

画面上の二本の線の間隔を測るイメージ
説明用の生成イメージです。実際の画面や検証結果ではありません。

MT4のバックテスト結果がおかしい原因を切り分ける手順

二つの検証結果を照合するノートと画面のイメージ
説明用の生成イメージです。実際の画面や検証結果ではありません。

比較する二つのテストを同じ条件にする

原因を調べるときは、前回のテストをA、今回のテストをBとして、同じ項目を横に並べます。EAの版と入力値、銘柄、時間足、開始・終了日、モデリング方法、スプレッド、初期証拠金、口座通貨、価格データの提供元を控えましょう。

たとえば、テスト期間だけが異なるなら、まず同じ期間にそろえて実行します。それでも違いが残る場合に、次の項目を確認します。複数の条件を同時に変えると、結果が一致しても何が原因だったか分からなくなります。再実行前後の設定と結果を対応付けることが、再現性の第一歩です。

二つのMT4端末を使う場合、同じEAファイルを選択したつもりでも、データフォルダや接続サーバーが異なることがあります。設定画面に表示された項目だけでなく、どの端末のどの履歴を使ったかも比較表に含めます。端末を分けても本番口座の建玉が自動的に分離されるわけではないため、テスト環境と実運用環境を混同しないようにしてください。

最初に異なる取引を探す

結果タブで取引の時刻、方向、数量、価格、決済時刻と損益を順番に照合します。取引回数だけで比べるより、最初の不一致を特定した方が、後に続く差を追いやすくなります。レポートの純益は、複数の取引や費用の差が積み重なった結果だからです。

最初のエントリー時刻から違うなら、入力値、時間足、足の確定タイミング、履歴データ、モデリング方法を優先して確認します。同じ時刻で入って価格が違うなら、銘柄やスプレッドなどの条件を確認します。同じ注文が異なる時刻に決済された場合は、利確・損切りの設定と足の途中の価格モデルを見直します。

時刻と数量がほぼ同じなのに損益だけが異なる場合も、価格だけが原因とは限りません。口座通貨、取引仕様、費用、持ち越しの有無を一緒に見ます。これらは候補を絞るための手順であり、その症状なら必ず特定の原因だと断定するものではありません。

テスターの操作と、EAの判定を目で追いたいときは、MT4のビジュアルモードで売買を確認する方法も使えます。表示されるチャートを見ながら、最初に差が現れた時刻の前後を確認してください。画像だけで約定の完全な再現を証明できるわけではないので、取引一覧も併せて確認します。

取引ゼロや初期化失敗はログで分ける

テストは終了したのに取引がゼロなら、まずテスターの操作履歴やエキスパートのメッセージを確認します。EAの初期化に失敗した場合と、正常に実行されたものの条件が成立しなかった場合は、次の対処が違います。表示された時刻とメッセージを控え、EAの提供元へ確認できる状態にしておきましょう。

対象銘柄、時間足、テスト期間、必要な外部ファイルや指標の有無も確認します。条件が複数あるEAでは、すべてが同時に成立したときだけ注文することがあります。短い期間で取引がなかっただけでは、条件が厳しすぎるとも故障とも言い切れません。

初期証拠金やロットが注文条件に合っていない場合には、取引が拒否されることもあります。ただし、注文を通すためにレバレッジを上げたり、損失リスクを考えずに設定を変更したりするのは避けてください。テスターのエラーと口座・銘柄の条件を照合し、デモ環境で一項目ずつ確かめます。

仮説は一つずつ検証し記録を残す

確認したい原因が見つかったら、基準となる設定を固定して、一つだけ条件を変えます。たとえば、スプレッドの影響を確かめるときは、EA、期間、履歴、モデルと他の入力値をそろえたまま、スプレッドだけを変更します。比較した値と結果を記録し、変化した取引を照合しましょう。

履歴の欠けを疑うときも、必要な期間とデータ元を先に確認します。価格データを変更すると、テスト結果はそれまでと比較しにくくなります。基準の結果を保存したうえで別のデータと比較し、差が現れる区間を確かめてください。データを入れ替えて結果が変わっただけでは、どちらが正しいかは決まりません。

再現できない場合は、EAの開発者や提供元に、ファイルの版、銘柄、時間足、期間、入力値、テスト方式、エラーの全文、最初に異なる取引を伝えます。ログや画像を共有する際は、口座番号や個人情報など、問い合わせに不要な情報を隠してください。

取引チャートの違いを虫眼鏡で確認するイメージ
説明用の生成イメージです。実際の画面や検証結果ではありません。

結果が変わる具体例で確認順を考える

例として、同じEAと同じ通貨ペアを使った二回のテストで、前回は100回、今回は90回の取引があったとします。この数字は確認手順を説明するための仮定です。まず、EAの版、取引期間と時間足、エントリー条件、モデリング方法を並べます。利益が減ったという結果だけから、EAの性能が落ちたと結論することはできません。

取引一覧を先頭から照合し、20回目まで一致して21回目から時刻がずれていたとします。この場合は、その直前の価格履歴やデータの欠け、参照している時間足、売買条件を確認するのが一つの順番です。スプレッドの制限を条件にするEAなら、その時のテスター設定も候補になります。見つかった差を原因と断定せず、他の条件を固定して再テストしましょう。

別の例では、注文時刻と数量は一致し、利益額だけが変わることがあります。まず個々の注文の価格と決済価格を比較し、そのうえで口座通貨やスワップなどの条件を見ます。全体の純益だけを比較すると、価格差と費用差が同時に起きていても区別できません。原因が一つとは限らないため、差が消えた後も他の条件を記録しておきます。

前回のレポートしか残っていないときは、取引一覧やパラメーターの正確な照合ができない場合があります。その場合、「再現できなかった理由は不明」として新しい基準を作るのが現実的です。残っていない設定を推測して埋めるより、今回のEA版、条件、レポートを一組として保存し、次回の比較に使ってください。

同じ条件に見えても見落としやすい点

テスターの設定欄に見える情報だけで、EAが参照するすべての情報を把握できるとは限りません。カスタム指標やファイル、時刻、別の銘柄などを利用するEAでは、それらの準備状況が判定に関わる可能性があります。自作EAなら参照先を確認し、購入したEAなら必要な動作環境を提供元へ尋ねましょう。

同じ実行環境で同じ期間を繰り返しても変わる場合は、EAの版や入力値が保存された状態を確認し、テスターのログを比較します。自動更新されたデータやプログラム内部で利用する情報の違いがないかも調査対象です。原因を確認できないまま複数の設定をまとめて変更すると、差の再現が難しくなるため、一度に一つの仮説を検証します。

バックテストと実運用の違いを残したまま判断する

二つのテスト結果が一致しても、実運用でも同じ価格・同じタイミングで売買できるとは限りません。市場の価格変動、実際のスプレッド、約定の遅れ、通信、業者ごとの取引条件など、テストと実環境には差があります。成績の一致は、同じ条件を再現できたかを確かめる一つの材料です。

利益額だけで判断せず、取引回数、損失の大きさ、長い停滞期間、異なる相場での挙動も確認しましょう。MT4のEAバックテスト結果の見方では、PFやドローダウンを読む順番を整理しています。結果が再現できない段階では、その数値をEAの優劣を決める根拠にしない方がよいでしょう。

検証後は、実際の注文を伴わないデモ口座でも動作を確かめ、想定する停止方法と残る注文を確認します。デモの結果も将来の利益を保証しません。金融庁のFX取引に関する注意は、価格変動やシステム障害などのリスクを挙げています。自動売買でも損失が生じることを前提に判断してください。

MT4のバックテスト結果がおかしいときのまとめ

結果が変わったら、まずEAの版と入力値、テスターの銘柄・時間足・期間、モデリング方法、スプレッド、履歴データを記録し、比較する条件をそろえます。次に、取引一覧から最初に差が出た時刻を探し、一つずつ仮説を確かめましょう。

取引ゼロは故障とは限らず、品質表示が高いことも実運用での再現を保証しません。原因を確認できないまま本番設定を変えず、必要な情報をそろえてEA提供元に相談することが、無理のない次の一歩です。

EA作成ツールの検証範囲を確認する

生成コードの動作テスト・コンパイル結果と、その限界 →記事内の戦略や個別のEAの収益性を検証した結果ではありません。

学んだルールを、形にしてみよう。

EA作成ツールを開く ↗