MT4・MT5 のバックテスト ― 2026年版 実践ガイド

最終確認日: · 普遍的な内容
リスク警告 · YMYL この記事は教育目的のみのものであり、投資助言を構成するものではありません。Forex取引には資金を失う高いリスクが伴います — ESMAによれば、個人投資家口座の74〜89%が損失を出しています。

Chris は 2024年1月 に最初の Expert Advisor を完成させました。デフォルト設定のまま Strategy Tester を実行し、資産曲線が三年間で 10,000 から 47,000 ユーロへ、勝率 78 パーセントで伸びていくのを眺めました。五か月後、彼のライブ口座は 7,200 ユーロでした。バックテストと現実の差は、三つの工房のミスから生まれました。粗悪なデータ、非現実的なパラメータ、そして walk-forward ではなく一回限りの最適化です。

MT4 と MT5 の Strategy Tester ― 本当に違うのはどこか

Strategy Tester はどちらのプラットフォームでも Expert Advisor を過去データに対して走らせますが、結果を信頼できるかどうかは内部の仕組みが決めます。MT4 はシングルスレッドです。M15 の五年バックテストは二分から十分かかり、数百通りの組み合わせを最適化すると二日を超えることもあります。MT5 は作業を複数のコアに分散し、マルチ通貨テストをネイティブに処理します。三つのメジャー通貨ペアのポートフォリオは、MT4 では直列に、MT5 では並列に走ります。第二の違いはデータです。MT4 は History Center から履歴を取得し(通常は二、三年ぶん)、MT5 はブローカーの tick データをダウンロードします。M30 以上ならこの差は決定的ではありませんが、M5 のスキャルパーにとっては天と地ほどの開きになります。前提知識はプラットフォームの基礎の解説をご覧ください。

モデリングモードと過去データの品質

Strategy Tester は三段階のローソク足モデリングを提供します。Open prices only は始値だけを使います。速いものの、日中売買には役立ちません。Control points はより小さい時間軸から補間して High と Low を再構成し、MT4 ではモデリング品質が最大 90 パーセントに制限されます。MT4 の Every tick は OHLC の枠から各ローソク足内部の値動きを組み立てます。MT5 の「Every tick based on real ticks」モードはブローカーの tick 履歴を読み込みます ― H1 より下の足で信頼できる結果を出せるのは、このモードだけです。

ジュネーブの Dukascopy Bank は、ほとんどのメジャー通貨ペア、指数、商品について 2003年 以降の tick 履歴を無償で公開しています。JForex Historical Data Downloader で取得し、無料の FX Blue Quant Data Manager か有料の Tickstory(30 から 50 USD)で MT4 の HST 形式に変換します。するとモデリング品質は 99 パーセントへ跳ね上がります。MT5 では「Every tick based on real ticks」を選びます。ブローカーの tick データがなければ MT5 は合成モードへ後退し、バックテストはデフォルト設定の MT4 と同じくらい当てになりません。

シミュレーションのパラメータ ― スプレッド、手数料、スワップ、スリッページ

デフォルトの Strategy Tester は現在のスプレッドと手数料ゼロを前提とします。スキャルピングにとってこれは、見かけ上の黒字と実際の赤字との差を意味します。スプレッドはあなたのライブ口座に合わせて設定してください(ECN ブローカーの EUR/USD で 0.8 から 1.5 pip、悲観シナリオではその 1.5 倍)。ECN の手数料は通常 1 ロットあたり 7 USD です。これを入れないと、5 pip の利益を狙う戦略はバックテストでプロフィットファクター 1.6 を示しながら、現実では 0.9 になります。二日から七日保有するポジションのスワップ(ロールオーバー/オーバーナイト金利)は、年間利益の 20 から 30 パーセントを消し去ることがあります。スリッページはシミュレートされませんが、NFP の最中には 5 から 20 pip が日常茶飯事です。現実的な補正としては、損失ごとに 1.5 pip を加え、利益ごとに 1 pip を差し引きます。

バックテストを台無しにする三つの落とし穴

look-ahead bias とは、意思決定の時点では入手できなかった情報を意図せず使ってしまうことです。MQL4/MQL5 では、インデックス 0 の現在のローソク足を参照したときに最もよく現れます。そのローソク足はまだ形成中なので、バックテストは確定した High と Low を知っているのに、ライブのトレーダーは知りません。ルールはこうです ― すべての読み取りはインデックス 1 以上を使うこと。コーディング面についてはプラットフォームのカテゴリもあわせてお読みください。

オーバーフィッティング(過剰最適化)は、最適化をやりすぎた結果です。トレーダーは Strategy Tester を千通りの組み合わせで走らせ、最良のものを選び、ありえないほど滑らかに見える曲線に見惚れます ― それは実のところノイズへの過剰適合です。警告サイン ― ドローダウンが 5 パーセント未満、プロフィットファクターが 3.5 超、200 取引で勝率が 75 パーセント超、二週間より長い調整のない資産曲線。これらが揃えば警報です。survivorship bias(生存バイアス)とは、今日まで生き残ったペアだけでテストすることです。「ブローカーで今も気配が出ている」エキゾチック通貨だけで組んだポートフォリオは、結果を 30 から 50 パーセント水増しすることがあります(2018年 以降の USD/TRY と 2015年1月 以降の EUR/CHF が示唆に富む例です)。

レポートの読み方と、curve-fit の解毒剤としての walk-forward

どちらのプラットフォームも八から十の指標からなるレポートを生成しますが、ほとんどのトレーダーは三つしか見ません ― 純利益、勝率、ドローダウンです。それでは足りません。プロフィットファクターは 1.5 超で十分、2 超で優秀、3.5 超は疑わしい。シャープレシオは 1.0 前後で許容、1.5 から 2.5 で非常に良好、3 超なら curve-fit を疑ってください。日中の最大ドローダウンは 25 パーセント未満に保つべきです。取引数は最低 100、理想は 500。モデリング品質は 99 パーセント。

walk-forward は Robert Pardo が 2008年 の古典で説いた手法で、今日でもシステマティック・ファンドの標準であり続けています。履歴を in-sample(四年)と out-of-sample(一年)に分割し、パラメータの最適化は in-sample でのみ行い、パラメータを凍結した戦略を out-of-sample に対して走らせ、窓を一年ぶん前へずらして繰り返します。集計した OOS の結果が、ライブ口座を最もよく近似します。WFE(OOS のリターンを IS のリターンで割った値)が 0.5 超なら頑健な戦略、0.3 から 0.5 は中程度の curve-fit、0.3 未満はトレーダー自身の自尊心を映した美化された反映にすぎません。手順ごとの仕組みは実践のカテゴリで扱っています。

「walk-forward 分析の全目的は、実際にリアルマネーをリアルタイムで投じることなく、トレード戦略のリアルタイム・実弾でのパフォーマンスを明らかにすることにあります。」 — Robert Pardo, 2008

MT4/MT5 の限界と、別のツールへ手を伸ばすとき

Strategy Tester には組み込みの限界があります ― 約定モデルは簡略化されており、MT4 のオプティマイザは数百通りを超えると行き詰まり、レポートにはパラメータ安定性の分析もモンテカルロ法もありません。価格行動(price action)に基づく裁量戦略にとって Strategy Tester は役に立たないことがあります。そうしたルールはコードとして完全には表現できないからです。MT4/MT5 が力不足のときは、Forex Tester 5(約 300 USD)や backtrader を使った Python に手を伸ばします。プラットフォームに依存しない方法論はリスク管理の観点とも結びつくため、リスク管理のカテゴリもあわせて参照してください。より広い文脈は ForexMechanics のトレーダーズ・ワークショップにあります。

今すぐやるべきこと

  1. 直近五年ぶんの EUR/USD の tick データを Dukascopy からダウンロードし、FX Blue Quant Data Manager か Tickstory で MT4 にインポートしてください。MT5 では「Every tick based on real ticks」を選び、ブローカーが tick 履歴を提供しているかを確認します ― この一歩を踏まなければ、以後の日中バックテストはすべて統計上の作り話にすぎません。
  2. あなたの EA を Strategy Tester で開き、ライブ口座に合致するスプレッド(ECN ブローカーの EUR/USD で通常 1.2 pip)を入力し、1 ロットあたり 7 USD の手数料と、損失ごとに 1.5 pip・利益ごとに 1 pip のスリッページ・ペナルティを加えてから、五年間の単一バックテストを走らせ、以前の結果と比較してください。
  3. 五年を in-sample 四年と out-of-sample 一年に分け、パラメータの最適化は in-sample の窓でのみ行い、最良の組を凍結して out-of-sample で単一のバックテストを実行してください。WFE が 0.5 を下回るなら、その戦略は curve-fit されており、もう一度の最適化ではなく、より単純なロジックを必要としています。
  4. EA のソースを読み、インデックス 0 を使っている iCustom・iHigh・iLow・CopyClose・CopyRates の呼び出しをすべてインデックス 1 に置き換えて、もう一度バックテストを走らせてください。30 パーセントを超える乖離があれば、その戦略は look-ahead bias で生きていたということであり、エントリーのロジックを書き直す必要があります。
Jarosław Wasiński
著者について

Jarosław Wasiński

MyBank.pl 編集長 · 金融・市場アナリスト

金融業界で20年以上の経験を持つ独立系アナリスト兼実務家です。2004年から運営されているポータルサイト MyBank.pl の創設者であり編集長を務めています。2007年から外国為替市場とマクロ経済のファンダメンタル分析を行っています。グローバル市場の視点から執筆し、欧州(ESMA)および日本(金融庁/FSA)の規制枠組みにも目を配っています。

出典・参考文献

  1. MetaQuotes MetaTrader 5 — Testing Trading Strategies · oficjalna pomoc MT5: tryby modelowania, parametry symulacji, optymalizacja www.metatrader5.com ↗
  2. MetaQuotes MQL5 Reference — Testing Trading Strategies · dokumentacja MQL5: tryby ticków, ograniczenia funkcji testera www.mql5.com ↗
  3. MetaQuotes MetaTrader 4 — Strategy Testing · oficjalna pomoc MT4: modeling quality, raporty Strategy Tester www.metatrader4.com ↗
  4. Dukascopy Bank SA Historical Data Export · darmowe dane tickowe od 2003 r. dla 99 procent modeling quality www.dukascopy.com ↗

よくある質問

MT4 のモデリング品質 99 パーセントと 90 パーセントは何が違うのですか?

モデリング品質とは、MT4 の Strategy Tester レポートの右上隅に表示されるパーセンテージで、シミュレータが各ローソク足内部の値動きをどれだけ忠実に再構成したかを示します。90 パーセントは、History Center を通じてブローカーからダウンロードしたデフォルトのデータで到達できる上限です ― MT4 はローソク足の内部を四つの点(Open-High-Low-Close)から補間するため、M15 のバックテストは決して検証しないローソク足内部の経路を仮定します。99 パーセントには、外部ソースからインポートした本物の tick データが必要です ― 通常は無料の Dukascopy API か有料の Tickstory です。実務上の差は劇的です。5 pip を狙うスキャルピング戦略は、90 パーセントのデータでは勝率 70 パーセント・年間リターン 30 パーセントを示すのに、同じ期間でも品質 99 パーセントでは勝率が 52 パーセントへ崩れ、曲線は横ばいになります。理由は単純です ― ローソク足内部の tick の動きがないと、価格が利確(テイクプロフィット)へ戻る前に損切り(ストップロス)が約定していたはずの瞬間が隠れてしまうのです。経験則として、戦略が M30 以上で利確が 30 pip より遠いなら、90 対 99 パーセントの差は致命的ではありません。スキャルピングをするか M15 より下で取引するなら、99 パーセント未満はすべて作り話です。MT5 は「Every tick based on real ticks」モードでこれを完全に回避します ― ブローカーが tick 履歴を提供していることが条件で、まともな ECN ブローカーのほとんどはこれを提供しています。

MT5 の Strategy Tester を手順どおりに設定するにはどうすればよいですか?

これは、設定の取りこぼしを防ぐために毎回同じ順序でたどる手順です。ステップ 1:Ctrl+R か View → Strategy Tester で Strategy Tester を開きます。ステップ 2:Expert の欄で、.ex5 ファイルにコンパイルした EA を選びます。ステップ 3:リストから銘柄を選びます ― 理想は、デモ口座または実口座で実際に取引しているものと同じ銘柄です。ステップ 4:時間軸を、戦略が本番で使うものと同一に設定します。ステップ 5:日付範囲を定めます。最低五年、できれば十年 ― 少なくとも一つの上昇局面、一つの調整、一つの危機イベント(2020年3月、2022年2月、2023年10月 が有用な目印です)を含むだけの長さです。ステップ 6:シミュレーションモデルを選びます ― 信頼できる結果には「Every tick based on real ticks」、反復を速くするには「Every tick」、最初のパラメータ走査だけなら「1 minute OHLC」。ステップ 7:実口座に合致する初期入金額と通貨。ステップ 8:レバレッジ ― ここが肝心で、ライブの設定と同じにします。日本では、個人投資家の店頭 FX のレバレッジは金融庁(FSA)の規制により最大 25 倍に制限されているため、国内の登録業者を使うなら 25 倍(1:25)でテストします(参考までに、EU では ESMA が個人投資家のレバレッジを最大 1:30 に制限していますが、これは日本の口座を拘束するものではありません)。国内の FX 会社は金融庁の登録を受けた業者を選び、無登録の海外業者には注意してください。ステップ 9:Settings タブで、単一実行なら Optimisation を Disabled、walk-forward の最初の反復なら Slow complete algorithm、より大きなパラメータ空間なら Fast genetic に設定します。ステップ 10:Start をクリックして観察します。MT5 が初めて履歴をダウンロードするときは、期間の長さと銘柄数に応じて二分から二十分かかります。完了すると、Backtest タブ(資産曲線)、Trades タブ(注文一覧)、Graph タブ(残高の推移)にアクセスできます。レポートは右クリック → Save as Report で HTML へエクスポートし、戦略プロジェクトのフォルダに保存しておきます。

look-ahead bias とは何で、MQL5 でどう避ければよいですか?

look-ahead bias とは、戦略のコードの中で、意思決定の時点では入手できなかったはずの情報を意図せず使ってしまうこと ― つまり未来を覗き込むことです。MQL5 では、おもに三つの箇所に現れます。第一:iCustom やそれに類する呼び出しで、現在のまだ確定していないローソク足をインデックス 1 ではなくインデックス 0 で参照すること。インデックス 0 はまだ形成中で、その High・Low・Close は tick ごとに変化します。そのため、その読み取りに基づくエントリー条件はバックテストではローソク足の確定値を使うのに、ライブのトレーダーはその値を 15 分から 30 分後まで見られません。第二:損切り(ストップロス)を計算する際に iHigh(symbol, period, 0) や iLow(symbol, period, 0) を使うこと ― バックテストはローソク足全体の極値を知っていますが、ライブのトレーダーは知りません。第三:複数の時間軸のデータを同期させる際に、戦略がエントリーする M15 のローソク足より前に H4 のローソク足が確定していたかを検証しないこと。検出:資産曲線が疑わしいほど滑らかなら(ドローダウンが 5 パーセント未満、プロフィットファクターが 3.5 超、200 取引で勝率 75 パーセント超)、同じ EA をデモ口座で一か月走らせてみてください。50 パーセントの成績の開きは、ほぼ確実にコードのどこかに look-ahead bias があることを意味します。修正:指標と価格履歴は常にインデックス 1 以上(確定したローソク足)で読み取り、決済条件はローソク足の確定時刻を明示した引数とともに CopyClose か CopyRates で検証し、時間軸の同期は SymbolInfoInteger(symbol, SYMBOL_TIME) で確認します。

手動のバックテストと自動のバックテスト ― どちらに意味がありますか?

どちらにも役割がありますが、それは工程の異なる段階においてです。手動のバックテスト(TradingView の Bar Replay や MT5 のステップ機能のようなリプレイ・ツールでローソク足を一本ずつ進めること)は、価格行動(price action)で取引し、自分のルールをコードに落とし込めない、あるいは落とし込みたくない裁量トレーダーに適した道具です。ボラティリティ、市場のリズム、そしてセットアップが魅力的に見え始める瞬間への感覚を養えます。欠点は、主観性、再現性のなさ(同じ期間をもう一度たどると違う結果になる)、そして長い時間です ― M15 で 200 取引には、注意深い作業で 30 から 50 時間かかります。自動のバックテストは Strategy Tester を通じて行い、戦略が Expert Advisor として存在することを要求します ― エントリー、決済、リスク管理のあらゆるルールを、「相場勘」の余地なく数学的に表現しなければなりません。その見返りは、再現性(同じデータで毎回同一の結果)、統計的有意性(一晩で 5,000 取引)、そして客観的な指標です。欠点は、裁量的なチャートパターンの判断を捉えられないことで、そのため直感に駆動された price action 戦略はこの網をすり抜けます。黄金の道筋は、市場と自分のアプローチを理解するために、まず 100 取引の手動バックテストから始めることです。結果が有望なら、ルールを EA に落とし込み、walk-forward を伴う自動の Strategy Tester に通してください ― この一歩が、本物の直感を、過去に曲線適合させた思い出から切り分けます。純粋な直感は、十二か月の実際のライブ履歴を通じて、約 90 パーセントの確率で機械的なシステムに負けます。

さらに深く · 完全ガイド