開発:MQL開発12/テストのバッチ処理(テスター起動設定ファイル&テストパラメータファイル) | シストレの現実

シストレの現実

インフラ構築のプロが、シストレをゼロから始める記録です。
リーン・スタートアップの考えを取り込み、Expert Adviser を作っていきます。

教えるような大したものではなく、ユースケースの一つになれば幸いです。

もう何回も何回もバックテストをしているんですが、
MT4で同じテストを何度も何度もやるのがめんどくさくなってきました。
そこで、MT4 バックテストを簡単にする方法を調べました。

まず、情報源はMT4のヘルプです。
「Client Terminal  ->  Tools -> 起動時の構成」の順にメニューを辿り、
そのページの中の「テスターの起動設定」の項に詳細に記載されています。
(Build 950 の場合)

ヘルプ



内容を要約すると、こういうテスター起動設定ファイルを作れば良いようです。
ちなみに、ファイル名は何でもよさそうで、テキストファイルで作れば問題ないようです。
; start strategy tester
TestExpert=EA名称
TestExpertParameters=パラメータファイル名
TestSymbol=通貨ペア
TestPeriod=対象周期(標準:1H)
TestModel=モデル(標準:0 全ティック)
TestRecalculate=再計算要否(標準:false)
TestOptimization=最適化の要否(標準:false)
TestDateEnable=テスト期間の指定要否(標準:false)
TestFromDate=テスト期間の開始日(標準:1970.01.01)
TestToDate=テスト期間の終了日(標準:1970.01.01)
TestReport=テストレポートファイルの相対パス(例:tester\EAreport 拡張子不要)
TestReplaceReport=レポート上書き可否(標準:false)
TestShutdownTerminal=テスト後のシャットダウン可否(標準:false)


この書式に従って、例えば作ってみるとこんな感じです。

TestExpert=EA01
TestExpertParameters=OptimizerSetting\ea01_profit_no1.set
TestSymbol=GBPJPY
TestPeriod=1H
TestModel=0
TestRecalculate=false
TestOptimization=false
TestDateEnable=true
TestFromDate=2015.01.01
TestToDate=2015.12.31
TestReport=tester\EAreport_profit_no1
TestReplaceReport=false
TestShutdownTerminal=true


注意点としては、TestExpertParametersパラメータと
TestReportパラメータで指定しているファイルパスは、
データフォルダのトップを起点とした場合の相対パス
です。

試してみたところ、絶対パスを指定しても機能しないようでした。ご注意下さい。


あと、またバックテストで使用するテストパラメータファイルの書式ですが、
GUIから設定すると拡張子が set のファイルで保存されます。
この書式も少し調べて見ました。


1つのパラメータにつき、下記の5つの行を指定します。
パラメータ名=指定値
パラメータ名,F=不明(0で固定?)
パラメータ名,1=スタート値(最適化する場合のみ使用)
パラメータ名,2=ステップ値(最適化する場合のみ使用)
パラメータ名,3=ストップ値(最適化する場合のみ使用)


これを必要なパラメータ毎に書いていきます。
MovingPeriodFast=4
MovingPeriodFast,F=0
MovingPeriodFast,1=5
MovingPeriodFast,2=1
MovingPeriodFast,3=10
MovingPeriodSlow=52
MovingPeriodSlow,F=0
MovingPeriodSlow,1=40
MovingPeriodSlow,2=5
MovingPeriodSlow,3=100
(略)


一点だけ注意としては、bool型のパラメータは 0 = false、1 = true で指定します。


これで沢山のバッチ処理できますので、実際にバッチファイルを作ってみました。
c:\TestParameter フォルダにテスター起動設定ファイルを配置した状態で実行します。
@echo off

set TESTSET="c:\TestParameter"
set MT4="C:\Program Files (x86)\MetaTrader 4\terminal.exe"

%MT4% %TESTSET%\20160130_no1.test
%MT4% %TESTSET%\20160130_no2.test
%MT4% %TESTSET%\20160130_no3.test
%MT4% %TESTSET%\20160130_no4.test
%MT4% %TESTSET%\20160130_no5.test


これで沢山一挙に実行できるので、効率が上がると思います。
有償ツールを使わなくても、大体のことはできそうです。


問題は、、、まだ改善に向けた分析が全然進んでないんですが、、、


明日こそきっと!!