【移植#100】複数銘柄のテストをまとめて実行 — MT5のSymbol Optimization¶

この記事の3行まとめ
- MT5には、Market Watchで選択した銘柄ごとに同じEA・期間・入力値をテストするモードがあります
- 設定ファイルから起動する場合は
Optimization=3を指定します - これは入力値を銘柄別に変える機能ではなく、損益や優位性を保証するものでもありません
原典のバッチ案をMT5で置き換える¶
原典は2010年5月27日の「バックテストを複数のペアに対して自動で行う。」です。MT4で銘柄別のテスター設定とバッチファイルを作り、順番に実行してレポートを集める案を紹介しています。通貨ペア数が少ない間は手動で切り替え、多くなったら設定作成と実行をまとめる、という問題意識でした。
MT5のストラテジーテスターには、Market Watchで選択した銘柄へ同じ入力値を適用してテストする最適化モードがあります。設定ファイルではOptimization=3がこのモードです。銘柄別に異なる入力値を割り当てる機能ではありません。まずMarket Watchに必要な銘柄だけを選択してから実行します。選択中の銘柄がすべて対象になるため、一覧を確認してから開始してください。
MetaTrader 5公式ヘルプ: Strategy Optimization MetaTrader 5公式ヘルプ: 設定ファイルとOptimization値
複数銘柄の実行を記録するプローブEA¶
配布EAは売買ロジックではなく、テスターで各銘柄が実行されたことを確認する読み取り専用のプローブです。OnTester()で確定済みの直近N本をCopyRates()し、指定本数を取得できたかを検査します。取得できた場合は、その範囲の高値と安値の幅を平均終値で割った値(%)を返し、テスターのパス結果に表示します。銘柄ごとの価格桁や水準の違いをそのまま比べないための表示値です。
この値は観測期間の値幅を要約するだけです。将来の値動き、取引コスト、注文約定、勝率、収益、銘柄間の優劣を評価しません。指定本数に届かない銘柄は-1を返し、無効値として区別します。通常ログには取得本数とエラー番号も出力します。EAは注文関数を呼ばず、ポジションを作りません。
専用MT5での確認¶
Build 6230の専用MT5で、チャート上に選択した4通貨ペアのH1履歴を100本ずつ読み取れることを確認しました。その後、2026年9月1日から4日まで(終了日は含まず)、Open prices only、Optimization=3、InpLookbackBars=100でテスターを実行しました。テスターのジャーナルには17パスが記録され、14件は値幅を計算、3件は履歴不足で無効値を返しました。画面で先に確認した4銘柄と実際のテスターパス数が一致しなかったため、チャート上の一覧だけで実行対象を判断せず、最適化結果に記録された銘柄名とパス数も確認してください。これは履歴確認の実験で、収益性の検証ではありません。
最適化という名称ですが、このモードでは銘柄ごとの最適値を探索しません。同じ入力値を選択銘柄ごとに実行し、結果を並べます。公式ヘルプ上、最適化基準値は遺伝的アルゴリズムに使う設定です。銘柄別モードでは各パスのOnTester()戻り値を結果確認に使えますが、値の大小で銘柄間の優劣を判定する用途にはしません。今回の確認では事前にチャートで見た銘柄数と結果パス数が異なりました。テスター設定や保存済みの銘柄選択が影響することがあるため、開始後に結果一覧の銘柄名・パス数を確認し、意図しない銘柄が含まれていたら結果を採用せず設定を見直してください。銘柄別の入力値や別々のsetファイルは自動選択されません。必要なら銘柄ごとの個別テストを設計します。
使い方と注意点¶
- ストラテジーテスターで対象EA、銘柄、時間足、期間、モデルを設定します。
- Market Watchでテスト対象にする銘柄だけを選択します。表示中かどうかだけでなく、選択状態を確認してください。
- 最適化モードで「Market Watchの全銘柄」を選び、EAの入力値を設定して実行します。
- 結果一覧とジャーナルで銘柄別の完了状態・履歴不足を確認します。
CLI設定を使う場合も、[Tester]のExpert、Symbol、Period、FromDate、ToDate、Optimization=3、レポート名を明示します。UseRemote=0とUseCloud=0で外部エージェントを使わず、AllowLiveTrading=0でEAのライブ取引許可を無効にする設定も確認します。レポート名を毎回変えるか上書き可にし、終了後に端末を閉じる場合だけShutdownTerminal=1を設定します。設定の意味と利用可能値は端末ヘルプで確認してください。
同じ入力値で結果を並べることは、汎用EAが複数銘柄で同じ動きをするかの初期確認に使えます。ただし、銘柄別の成績が揃うことや、別期間でも再現することを意味しません。データ期間、スプレッド、手数料、スワップ、ティックモデル、取引時間をそろえて評価し、最適化の結果だけで実運用を判断しないでください。
ダウンロード¶
100_Multi_Symbol_Tester_Probe_v1_00.mq5 をダウンロード
前後の記事¶
次: 【移植#101】複数のsetを順番にテスト — MT5の入力値とレポートを照合する