コンテンツにスキップ

【移植#101】複数のsetを順番にテスト — MT5の入力値とレポートを照合する

2つのsetファイルと個別レポート名を確認したMT5検証画面

この記事の3行まとめ

  • setファイルごとにMT5テスト設定を用意し、同じEAを別々の入力値で順番に実行できます
  • 実行した値はログとレポートで照合し、レポート名を分けて上書きを防ぎます
  • この確認用EAは値幅を記録するだけで、売買や成績評価はしません

原典の案と今回確認する範囲

原典は2010年5月28日の「バックテストを複数のsetに対して自動で行う。」です。公開検索で確認できた記述では、異なるパラメーターのsetファイルを複数用意し、テスター設定から読み込む方法が話題になっています。また、同じレポート名を使いTestReplaceReport=trueにすると前の結果が置き換わる点にも触れています。元記事本文や配布コードは現在確認できないため、ここでは当時の手順をそのまま再現したとは扱いません。

原典「バックテストを複数のsetに対して自動で行う。」を読む

MT5ではStrategy Testerの設定ファイルにExpertParametersで入力setを指定し、Reportで結果ファイル名を指定できます。setファイルはテスター設定フォルダに置きます。そこで、二つのsetを別々のテスト設定から順番に読み込ませ、EAが受け取った値とレポートを対応づけられるかを確認します。通常テストのレポートは拡張子を省くと.htm、最適化レポートは.xmlになります。setの自動切替えを行う機能をEA内に作るのではなく、テスター設定を実行単位に分ける方法です。

MetaTrader 5公式ヘルプ: 起動設定ファイル MetaTrader 5公式ヘルプ: Strategy Optimizationと入力パラメーター

入力値の受け取りを記録するEA

配布EAはInpSetIdとInpLookbackBarsを読み取り、テスト終了時に指定本数の確定足から平均値幅を計算します。OnTester()の戻り値には識別番号、本数、平均値幅を含めます。実行ログにも設定値と取得本数を出すため、どの入力で走ったのかをレポートのCustom値と照合できます。

EAは注文関数を呼びません。値幅は市場の方向や将来の利益を表すものではなく、入力値がテストへ渡ったことと、履歴を必要本数だけ読めたことを確認するための値です。

setを分けて順番に実行する

例として、次の二つのsetファイルを用意します。末尾の最適化範囲は固定値にし、通常の単一テストとして実行します。

set-a.set

INI
InpSetId=1||1||1||1||N
InpLookbackBars=20||20||1||20||N

set-b.set

INI
InpSetId=2||2||1||2||N
InpLookbackBars=40||40||1||40||N

それぞれに別のテスター設定を作り、ExpertParametersとReportだけでなく銘柄・時間足・期間・モデルも同じ値にします。たとえば、A側ではExpertParameters=set-a.setとReport=reports\set_a.htm、B側ではExpertParameters=set-b.setとReport=reports\set_b.htmを指定します。設定を順番に起動すれば、二回のレポートを別々に残せます。

レポートを連番保存するReplaceReport=0も使えますが、同一名のままでは結果とsetの対応が読み取りにくくなります。設定ファイルごとにレポート名を分けるのが簡単です。既存レポートを置き換える設定は、検証中は使わないでください。

MT5での確認

Build 6230の専用MT5で、EURUSD H1、2025年1月1日から12月31日、Open prices onlyの条件で二つの設定を順番に実行しました。Aはset_id=1・20本で平均値幅0.00092950、Custom値1020000.00092950。Bはset_id=2・40本で平均値幅0.00108225、Custom値2040000.00108225でした。ログのset_id・lookback・copiedと、各HTMLレポートの入力値・OnTester値が対応していることを確認しました。レポートはset_a.htmとset_b.htmに分かれ、注文・ポジションは作られません。

この実験は、二つの固定入力setが別々のテストへ渡り、出力先を分けられることだけを確認します。最適化ではなく、異なる期間や銘柄への頑健性、勝率、収益性も評価しません。実際のEAで使う場合は、set内の変数名とEAのinput名・型が一致していることを確認し、最初は短い期間と少数のsetでログとレポートを照合してください。

ダウンロード

101_Set_Batch_Tester_v1_00.mq5 をダウンロード


前後の記事

前: 【移植#100】複数銘柄のテストをまとめて実行

次: 【移植#102】最適化を段階的に進める — 探索数と相互作用を比べる

あわせて読みたい記事

— SPONSORED —