MT4のバックテストで表示される「90%」だけを見て、EAの検証結果を信頼してよいか迷っていませんか。この記事は、MT4でEAを検証したい初心者を対象に、ヒストリカルデータの取得からテスト条件の固定、モデリング品質の読み方、フォワード比較までを、確認できた公式仕様と未確認事項を分けて解説します。手順を順番に追えるように構成しています。
MT4バックテストで先に確認する3点
- ヒストリーセンターで対象銘柄・期間の履歴を用意する
- EAのロジックに合わせてテストモデルを選ぶ
- モデリング品質と元データの正確性を同じ意味として扱わない
MT4バックテストは履歴の確認と条件固定から始めます
MT4バックテストは、ヒストリカルデータを用意したうえで、EAのロジックに合うモデルと固定した条件で実行してください。
ヒストリーセンターで対象銘柄の履歴を用意する
最初に、テストする銘柄と期間に対応する履歴がMT4内で使える状態かを確認します。EA(エキスパートアドバイザー)を用いたバックテストを開始するにあたり、対象とする通貨ペアや期間のヒストリカルデータが正しくMT4内に読み込まれていなければ、正確な検証を行えません。まずはデータの管理画面を開き、検証の前提となる履歴データを揃える手順を詳しく確認していきましょう。
F2で開き、銘柄と時間足を選ぶ
MT4において過去の価格データを一括管理・ダウンロードするための画面が「ヒストリーセンター」です。この画面を呼び出すには、キーボードのF2キーを押すか、上部メニューにある「ツール」項目から「ヒストリーセンター(Tools – History Center)」を選択します。初心者の方でも直感的に操作できる標準機能となっています。
ヒストリーセンターが表示されたら、左側に並んでいるツリー表示から、検証を行いたい通貨ペアなどの銘柄をダブルクリックして選択枠を広げます。次に、1分足や5分足、1時間足といった対象の時間足を選択し、データの読み込み状況を確認してください。
バックテストを開始する前に検証対象の銘柄やテスト期間をあらかじめ明確に定めておくことは非常に重要です。事前に目的の銘柄・時間足を定めておかないと、不要なデータを無闇に取り込んでしまい、ストレージ領域を圧迫したりテスト実行時の誤操作に繋がったりする原因になります。そのため、まずは対象銘柄と時間足を正しく選定した上でデータ準備を進めましょう。
M1取得と外部ファイルのインポートを使い分ける
ヒストリーセンターからヒストリカルデータを準備する際には、公式サーバーからの標準ダウンロード機能を利用する方法と、外部から用意したデータファイルをインポートする方法の2通りが存在します。それぞれの仕様と特徴を理解して使い分けましょう。
MetaQuotes社の公式ヒストリカルサーバーから「ダウンロード」を行う場合、ダウンロードされる基本データは1分足(M1)の形式となります。5分足や15分足、1時間足などの上位時間足については、取得したM1データから自動再計算されてMT4内で生成される仕組みです。そのため、基本となるM1の履歴をしっかり保持しておくことが重要になります。
一方で、自作データや特定のデータ提供元から入手した高精度なファイルを読み込ませたい場合には「インポート」機能を使用します。MT4のヒストリーセンターが対応している外部データ形式のインポートチェックリストは以下の通りです。
- CSV形式(.csv)
- PRN形式(.prn)
- TXT形式(.txt)
- HTM形式(.htm)
- HST形式(.hst)
インポート作業にあたっては、使用するファイル形式を事前に確認した上で指定のフォーマットに沿って取り込みを行います。ただし注意点として、ヒストリーセンター経由で取得・作成したデータは、実際に取引運用で利用しているブローカー取引サーバーの履歴とは異なる場合があります。配信元によってスプレッドや価格変動の微細なデータが微妙に変化するため、検証に使用したデータの取得元やファイル名は必ず記録・管理しておきましょう。
取得後は欠損を確認し、テスト条件を記録して固定する
ヒストリカルデータを取得・準備した後は、そのままテストを実行するのではなく、検証条件を正しく記録して固定することが不可欠です。同じEA(エキスパートアドバイザー)であっても、対象とする期間やスプレッドなどの前提条件が変わってしまうと、バックテスト結果を比較評価することができなくなります。検証の再現性と正確性を確保するために、条件設定とデータ確認の具体的なポイントを押さえましょう。
比較する条件を1回ごとに記録する
バックテストで得られた損益やプロフィットファクターなどの数値を適切に比較・評価するためには、検証の再現性を保つことが極めて重要です。テストを繰り返し実施する際は、検証ごとに変更するパラメーター変数と、常に固定しておくべき基本条件を明確に分け、テスト1回ごとの設定内容を詳細に記録しておきます。
特にスプレッドの設定については、MT4のストラテジーテスター画面にある「Spread」欄を利用します。この「Spread」欄では、任意の固定スプレッドを設定できる公式仕様となっています。市場の変動スプレッドではなく固定スプレッドを指定することで、期間ごとの取引コスト条件を統一でき、純粋なロジックの優位性を比較しやすくなります。
検証結果の比較可能性を担保するために、テスト実行時に必ず記録・固定しておくべき基本項目は以下の通りです。
- 検証対象の期間(開始日時から終了日時まで)
- 使用するEAの名称およびロジックのバージョン
- 対象銘柄(通貨ペア)
- 検証を行う実行時間足
- テストモデル(全ティック・コントロールポイントなど)
- スプレッド(Spread欄で設定した固定値)
不整合チャートエラーは原因候補を分けて確認する
バックテスト完了後に生成されるテスターレポートでは、記載されている「不整合チャートエラー」の項目数値を必ずチェックします。このエラー項目が0以外で表示されている場合は、読み込んだ過去の価格データの取り込みや整合性を再確認するサインです。数値だけで原因を特定せず、データの取得・インポート手順と接続状態を順に確認してください。
不整合チャートエラーが0以外の場合、インポート失敗やオンライン接続による履歴書き換えが原因候補として挙げられています。エラーが検出された場合は、一度既存の履歴データを削除してから再取得するか、ネットワークをオフラインにしてテストを実行するなど、原因に応じた切り分け作業を行ってください。
なお、トラブル対応において意識すべき重要な注意点があります。テスターレポート上でエラー数が0と表示されていても、それだけで使用したヒストリカルデータの精度や実運用での再現性が完全に保証されるわけではありません。不整合チャートエラーが0であることはデータフォーマットが整合している目安に過ぎないため、エラー数だけでデータの品質を断定せず慎重に結果を評価しましょう。
- ヒストリーセンターで履歴を取得またはインポートする
- 対象期間の欠損・不整合チャートエラーを確認する
- EA・銘柄・時間足・モデル・固定スプレッドを記録してテストする
- 結果を実運用前のフォワードテストと比較する
EAの値動き依存度に合わせてテストモデルを選ぶ
MT4のストラテジーテスターでバックテストを実施する際、モデルは単に処理の速さだけで選ぶのではなく、EA(エキスパートアドバイザー)がバー内部での価格変動(値動き)を利用するロジックかどうかによって適切に選択します。テスターのモデル設定によって価格データの生成・補間方式が大きく異なるため、EAの取引条件に合ったモデルを選ぶことが検証精度を保つための第一歩となります。
バー内のSL・TPや短期値動きに反応するEAはEvery tickを確認する
ストラテジーテスターで選択できるテストモデルには、Every tick、Control points、Open prices onlyの3モデルが用意されています。このうち、ローソク足の形成途中において損切り(SL)や決済指値(TP)の判定を行ったり、スキャルピングのように短時間の細かな価格変動に依存してエントリー・決済を行ったりするEAを検証する場合は、Every tickを選択してテスト挙動を確認することが推奨されます。
ただし、Every tickを利用する際には、その生成メカニズムに関する正しい理解が必要です。MT4の公式仕様において、Every tickは下位時間足とフラクタル補間に基づきティックを生成する仕組みとなっています。つまり、過去に発生した実際の全ティックデータをそのまま完全再現しているわけではなく、下位時間足のデータを元にした計算上の補間処理が行われている点に留意しなければなりません。
したがって、Every tickでテストを実行する場合であっても、実ティックの完全再生であると決めつけるのは避けましょう。すべてのEAに対してEvery tickが必須であると一概に断定することはできません。ロジックの特性に応じて、価格補間の影響を考慮しながらテスト結果を慎重に評価することが大切です。
始値判定型ならOpen prices onlyも比較候補にする
一方、ローソク足が確定したタイミング(始値)のみで売買判断や条件判定を完結させるEAであれば、必ずしもEvery tickを使う必要はなく、Open prices onlyも有効な比較候補となります。MT4の公式仕様において、Open prices onlyは確定したバーを分析する最速方式として定義されています。
バー内部の価格推移を計算・補間しないため、バックテストの処理速度が非常に速く、長期間のデータ検証や複数パラメーターの最適化を短時間でスムーズに進められるメリットがあります。始値確定時のみで動作するロジックであることが明確なEAであれば、まずはOpen prices onlyを用いてロジックの基本的な動作確認や大まかな優位性の検証を効率よく行うとよいでしょう。
また、中間的なモデルとしてControl pointsも存在します。Control pointsは直近の下位時間足を基に12個のコントロールポイントを補間する方式であり、Every tickよりも処理が軽く、Open prices onlyよりもバー内の動きを一定程度反映したテストが可能です。
EAがバー内部の値動きに依存するか始値のみで動作するかによって、適したテストモデルは異なります。バックテストを行う際は「全ティックだから常に正しい」と決めつけるのではなく、それぞれのモデルの公式仕様とメリットを理解した上で使い分けましょう。
「Every tick」でも実ティックの完全再生とは限りません
- MT4公式ヘルプでは、利用可能な下位時間足とフラクタル補間に基づくモデルと説明されています。
| モデル | 公式仕様の要点 | 選択時の判断軸 |
|---|---|---|
| Every tick | 利用可能な下位時間足とフラクタル補間でティックを生成 | バー内のSL・TPや短期値動きに依存するかを確認する |
| Control points | 直近の下位時間足を基に12個のポイントを補間 | Every tickより粗い近似でよいかを確認する |
| Open prices only | 確定したバーを分析する最速方式 | 始値だけで判断するロジックかを確認する |
参照: 出典
スプレッド設定がAsk価格と結果に与える影響を確認する
MT4のストラテジーテスターでバックテストを実施する際は、テストモデルの選定だけでなくスプレッドの設定仕様にも注意を払う必要があります。MT4の履歴データとスプレッド設定の仕組みを正しく理解しておかないと、買い注文(エントリー)や売りポジションの決済(Ask価格の適用)が行われる条件を読み違え、テスト結果の評価を誤ってしまうおそれがあるためです。
Bid履歴だけではAsk側の条件をそのまま検証できない
MT4の価格履歴(ヒストリカルデータ)に関する公式仕様として、価格履歴はBid価格のみを保存する仕組みとなっています。ローソク足データや過去の価格記録には買い気配値であるBidの情報しか含まれておらず、過去の各時点における実際のAsk価格(売り気配値)そのものは保存されていません。
そのため、ストラテジーテスターでは現在スプレッドでAsk価格をモデル化する仕様が採用されています。具体的には、初期設定においてテストを開始した時点のリアルタイムな現在スプレッドを参照し、保存されているBid価格にそのスプレッド値を足し合わせることで、過去のAsk価格を計算上再現して取引の約定判定を行っています。
この仕様により、ロングエントリーやショート決済のようにAsk価格が必要となる場面では、テスト開始時点の市場環境(スプレッド幅)に依存して判定が行われます。過去の特定時期にスプレッドが拡大していた場合でも、履歴データ単体ではその変動が反映されない点に注意して検証を進めることが大切です。
開始時スプレッドと固定スプレッドを混同しない
ストラテジーテスターの設定画面や構成ファイルでスプレッド数値を指定する際、設定値による挙動の違いを理解しておくことが不可欠です。MT4の設定仕様では、TestSpreadを0に指定すると、テスト実行開始時点における対象銘柄の現在スプレッドが自動的に適用される仕組みとなっています。
例えば、構成ファイルなどでTestSpread=0と設定した場合や、テスター画面のSpread設定でCurrent(現在値)を選んで実行した場合は、固定値ではなく開始時点の動的なスプレッドが使われます。一方、任意の数値を直接入力して固定した場合は、指定したスプレッド値が全テスト期間を通して一律で適用されます。
異なるタイミングでバックテストを再実行した際、TestSpread=0のままだと実行した時間帯や市場環境によってスプレッド値が変わり、テスト結果に差が生じることがあります。検証条件を一定に揃えて比較分析を行いたい場合は、あらかじめスプレッド数値を明示的に固定し、テスト条件としてスプレッド設定を記録しておくことが推奨されます。
MT4のバックテストではBid履歴からAsk価格をモデル化する仕様を理解し、スプレッドの設定条件を明確に記録した上で結果を検証しましょう。
モデリング品質を過信せず、フォワードで検証を続けます

モデリング品質は履歴の使われ方を示す指標として確認し、元データの正確性や実運用の再現性とは分けて判断してください。
モデリング品質は元データの正確性を採点する数字ではない
レポートの品質表示は有用ですが、何を計算している指標かを先に理解する必要があります。MT4のストラテジーテスターで過去検証を実行した際、レポート画面に「90%」といったモデリング品質の数値が表示されると、読み込んだデータの精度や信頼性が完璧に保証されているように感じられるかもしれません。しかし、このパーセンテージはデータそのものの正しさや品質を評価した採点結果ではありません。
品質表示は下位時間足を使えた区間の重み付き指標として読む
MT4レポートに記録されるモデリング品質は、過去価格データに含まれる数値の正確さや配信エラーの有無を直接測定した結果ではありません。実際の仕様として、テスト履歴中でどの時間足データからモデル生成を開始したかに重みを付ける公式計算式で算出される仕組みになっています。
具体的には、テストを実行する期間全体に対して、より細かい下位時間足のデータが存在し、それらを参照してバー内部の価格変動(擬似ティック)を補間生成できた領域の割合が計算対象となります。モデリング品質の公式計算では、M1データでモデル化された区間の重みは0.9であると規定されています。標準的な過去検証において結果レポートに表示される「90%」や「90.00%」という数値は、検証期間のすべてにおいてこの0.9の重みが適用された計算結果を示しているに過ぎません。
したがって、この指標はあくまで「バー内部の動きを作るにあたって、1分足などの下位データをどの程度利用できたか」という履歴生成上のカバレッジ(網羅率)を表しています。価格の数値自体が市場の実勢と一致しているかを判定しているわけではないため、指標の定義を正しく把握しておくことが重要です。
90%表示だけではデータ源の差異を解消できない
90%という表示は判断材料の一つですが、価格データそのものの正確性や実運用の再現性を証明する数字ではありません。FX取引でバックテストを行う場合、使用するヒストリカルデータは提供元であるブローカー(FX会社)ごとに異なります。そのため、口座ごとのスプレッド幅、価格データの配信間隔、さらにはデータが一部抜け落ちている欠損期間などの違いが必然的に生じます。
購入・入手したデータ履歴の精度や欠損、異常値の有無などは、モデリング品質の公式計算式において評価の対象に含まれません。そのため、モデリング品質と配信元価格の正確性を分ける視点を明確に持つことが重要です。どれほど高いパーセンテージが表示されていても、それだけでヒストリカルデータの品質が優れていると結論付けることはできません。
バックテストの信頼性を確保するためには、90%表示を合格証にしないという明確な基準を持ち、データ供給元が提供する履歴の整合性や、実際の運用環境とのスプレッドの乖離を別個にチェックする姿勢が求められます。
90%・25%・99.9%という数字の読み違いを防ぐ
ストラテジーテスターのレポートに表示されるモデリング品質の数値は、表示された数字の大きさそのものよりも、どの時間足データと生成方式から算出されたのかを確認して評価することが重要です。90%や25%といった数値、さらには99.9%という表示の扱いについて、正しい見方と未確認の前提を区別して整理します。
25%や90%は時間足とモデル生成の条件を確認して読む
バックテストの基本操作として、まずストラテジーテスターの画面で時間足を選択し、テストを実行した後にレポートタブでモデリング品質の数値を確認します。このとき表示されるパーセンテージは、検証対象の時間足や内部データの仕様によって大きく変動します。
MQL5公式フォーラムに転載されたMetaQuotesの説明によれば、標準MT4はM1より小さい時間足データを保存しない仕様になっています。そのため、M1の時間足でテストを行った場合、モデリング品質は25%を超えないとされています。一方で、M1データを用いてモデル化された区間については90%品質として評価されます。実際の運用検証でも、M5以上の時間足では90%、M1の時間足では25%が上限になるという挙動が報告されています。
このように、数値が25%にとどまるのはデータが不完全だからではなく、1分足より細かな履歴を持たない標準MT4の構造によるものです。ただし、フォーラム上の補足説明は公式仕様を補助する情報として捉え、実際の挙動はブローカーや実行環境に依存する可能性がある点に留意しながら条件を確認しましょう。
99.9%表示はデータ提供元と生成方法を確認できるまで結論に使わない
過去検証の情報を調べる際、モデリング品質「99.9%」という高い精度を目指す解説を見かけることがあります。しかし、標準のヒストリカルデータのみを読み込んだ通常のMT4環境において、モデリング品質が99.9%に達するという挙動は今回の確認範囲では実証されていません。
99.9%という数値を実現するには外部ツールやサードパーティの高品質ティックデータを利用するケースが一般的とされますが、外部ティックデータの導入手順、動作に対応するMT4のビルドバージョン、および発生する導入費用については、今回の調査では未確認の範囲となります。そのため、検証環境ごとの具体的な条件をあらかじめチェックする習慣が大切です。
表示形式の数字だけに依存せず、データ提供元とデータの生成方法が客観的に確認できるまでは判断の最終結論に使わない姿勢が求められます。数値の高さだけで実運用での再現性やEAの信頼性を保証することはできないため、確認済みの事実と未確認の要素を慎重に切り分けて検証を進めましょう。
判断に使えること
- 下位時間足データを利用してモデル化できた区間の目安として確認する
- 同じ条件でのテスト結果を比較する際の補助指標にする
数字だけでは判断できないこと
- 配信元の価格が正しいことの証明
- 実ティックの完全再現
- 実運用の約定条件や将来成績の保証
バックテストと実運用の差をフォワードテストで確かめる
過去データで条件をそろえて過去検証を行った後は、実際の運用環境やデモ口座での挙動を確かめる「フォワードテスト」との比較段階に移ります。過去の計算結果と実際の取引結果にはさまざまな要因による差が生じるため、両者の数値をどのように照らし合わせて検証を継続すべきか、具体的な注意点を整理します。
フォワード比較ではバックテストと同じ条件記録を参照する
フォワードテストで得られた運用成績を適切に評価するためには、過去検証を実行した際のバックテスト条件記録を正確に手元に用意し、同じ基準で数値を比較することが欠かせません。テスト実行時に指定した対象期間、使用したモデル生成方式、設定したスプレッド値、ならびにEAの各種パラメータ設定といった前提条件が曖昧なままだと、フォワード運用時に成績の乖離が発生した際、その原因が設定の違いによるものなのか運用環境の差異によるものなのかを追及できなくなってしまいます。
フォワード比較を円滑に進める具体的な第一歩として、バックテスト時の出力レポート(期間・モデル・スプレッド・EA設定)とリアルタイムの運用記録を1対1で対応付けられる確認手順を整えておきましょう。なお、実際の取引で発生する売買手数料やスワップポイント、あるいは約定拒否(リクオート)などの挙動が、標準のMT4バックテスト環境においてどこまで正確に再現されるかについては、今回の検証範囲では未確認の要素として扱います。手元で確認済みの設定基準を正確に揃えたうえで、乖離の傾向を冷静に追跡する姿勢が重要です。
約定環境の差はバックテストの成績と分けて扱う
バックテスト画面のレポートでどれほど良好な収益曲線や高いパフォーマンスが記録されていたとしても、その過去成績がそのまま将来の実運用における利益を保証するものではないという点に強く留意する必要があります。過去のヒストリカルデータに基づいた計算と、リアルタイムで注文が処理される実際の取引環境との間には、構造上の大きな違いが存在するためです。
実運用の取引環境においては、注文発注から決済までの間に価格が変動して発生するスリッページ、市場の流動性や時間帯に応じて広がる変動スプレッド、およびネットワークやサーバー処理に起因する約定遅延という3つの要因が取引結果に直接影響を及ぼします。これらの約定環境に関わる要素は、固定データを用いたバックテストの仕組み上、正確に再現されない性質を持っています。そのため、バックテストの成績はあくまで特定の過去データによる試算結果として位置づけ、実際の取引環境で生じる約定リスクや環境差とは切り離して評価・検証を続けることが不可欠です。
実行前後のチェックリストで検証条件を残す
最後に、結果の数字だけでなく、その数字を再現・見直しできる情報が残っているかを確認します。バックテストは1回の実行で終わりではなく、後から同じ条件を再現して設定を見直せる状態にしておくことが大切です。事前準備と事後チェックの双方で確認項目を整理し、検証の精度と再現性を高めましょう。
実行前に残すべき条件を一覧化する
テストを実行する前には、後から同じ環境で検証を再現できるように、設定したパラメーターやデータ取得元を記録しておきます。取得したヒストリーはブローカー取引サーバーの履歴と異なる場合があるため、取得元を記録して再確認する必要があります。同じブローカーであっても、取得方法やサーバー環境によってデータ内容に差が生じることがあるためです。
検証の再現性を保つための具体的な第一歩として、以下の設定項目をあらかじめ整理する作業から進めていきましょう。
- 取得元の記録:ヒストリカルデータのダウンロード元および入手方法
- 対象期間:検証に使用するテストの開始日と終了日
- 使用EAと設定:EAの名称、バージョン、および内部パラメーター
- 対象銘柄と時間足:テスト対象の通貨ペアとタイムフレーム
- モデル化の種類:全チックスムースやコントロールポイントなどの生成モデル
- スプレッド設定:MT4ではカスタムスプレッドを設定でき、
TestSpreadが0の場合はテスト開始時点の現在スプレッドを使用します。
これらの条件をあらかじめノートや管理ファイルに残しておくことで、検証再現の効率化につながり、後から条件を変更して再検証を行う際にも混乱を防ぐことができます。
実行後は品質表示・エラー・フォワード結果を並べて確認する
バックテストの処理が完了した後は、レポート画面に表示される収益率やプロフィットファクターといったパフォーマンス数値だけに目が行きがちですが、出力ログやエラー発生の有無を並行してチェックすることが重要です。特に、不整合チャートエラーやデータの欠損が生じていないか、テスター画面のログタブを開いて不審な警告メッセージが残っていないかを確認してください。
仮にモデリング品質などの表示数値が高く見えたとしても、データ欠損やエラーが潜んでいる場合は検証結果の信頼性が低下します。エラーの有無と品質表示をセットで確認することが適切な判断につながります。
バックテスト完了後の次の行動は、過去検証の結果をそのまま運用に採用することではなく、実際の市場環境で検証を行うフォワード比較へと進めることです。バックテストで得られた過去データ上の記録と、リアルタイムの運用環境で得られる取引結果を並べて比較・追跡することで、実際の運用に向けた確実な検証プロセスを構築できます。
バックテスト結果を判断する前の確認リスト
判断を決める前に、次のポイントを上から順に確認してください。ひとつでも引っかかるところがあれば、いったん立ち止まって見直す判断も大切です。
- ヒストリーセンターで取得・インポートしたデータの取得元を記録した
- 対象期間、EA、銘柄、時間足、テストモデルを記録した
- スプレッドが固定値か開始時点の値かを確認した
- 不整合チャートエラー、期間の欠損、ログを確認した
- モデリング品質を元データ精度や実運用の保証として扱っていない
- バックテスト結果をフォワードテストと比較する準備をした
よくある質問
MT4のEvery tickは実際の全ティックを再現しますか?
MT4公式ヘルプでは、利用可能な下位時間足とフラクタル補間に基づいてティックを生成する方式です。実ティックの完全再生と同じ意味には扱わず、EAのロジックに合うモデルかを確認してください。
モデリング品質90%ならヒストリカルデータは90%正確ですか?
いいえ。公式計算式では、モデリング品質は下位時間足データを使ってモデル化できた区間に重みを付ける指標です。配信元の価格、欠損、実運用の約定条件まで証明する数値ではありません。
スプレッドはバックテストで固定できますか?
できます。MT4のストラテジーテスターではSpread欄で任意の固定スプレッドを設定できます。TestSpreadを0にした場合は、テスト開始時点の対象銘柄の現在スプレッドが使われます。
コメント