バックテストを複数のペアに対して自動で行う。

特定の通貨ペアのみに通用するEAでは、その通貨ペアだけでバックテストしたらよいのですが、汎用的な戦略を持たせたEAでは、複数のペアに対して有効性をテストすることになります。


通貨ペア数が少ないうちは、Stragety Tester 上で手作業で通貨ペアを変更すれば十分です。しかし、ペア数が増えるとかなり面倒になるので、その場合はバッチファイルによるテストを検討したほうが良いでしょう。
…以下、大雑把に説明するので、具体的なやり方は、ご自身で探求ください。^^;


コマンドラインからテストを実施する方法は、Terminal のヘルプに解説されています。

テスト設定ファイル(EURUSD.txt)の書き方は、

で、

"C:\Program Files\FXDD - MetaTrader 4\terminal.exe" "C:\Program Files\FXDD - MetaTrader 4\tester\batch\EURUSD.txt"

こんな感じで、テスト設定ファイルを引数にして実行すればテストが可能です。
※テスト前に、必要なヒストリカルデータをダウンロードしておく必要があります。
※テスト前に、MT4を起動して、Visual Mode を解除して終了させてください。



たくさんの通貨ペアの設定ファイルを個別に書くのは面倒なので、一括作成するPerl スクリプトを用意します。

※実行には ActivePerl のインストールが必須です。


tester 以下に batch フォルダを用意して…


BatchFileMaker.pl を実行すると…


各通貨用のテスト設定ファイルと、バッチファイル( AutoTest.bat )が出来ます。


AutoTest.bat を実行すると…


順番に実行されて、結果レポートが集まりました。


TestOptimization=true にすれば、TestExpertParameters で指定した set ファイルに従って Optimization することも可能です。
通貨ペア毎に異なる set ファイルを用いる場合は、TestExpertParameters=macd.set を TestExpertParameters=macd_EURUSD.set のように EURUSD を含めた名前にしてください。



おまけ


スクリプトに同梱した BatchFileMakerTypeB.pl は、テスト期間の分割もできます。下図は、1ヶ月単位で分割してバッチテストしたものです。

これがなんの役に立つか?は謎ですが…。