ブログトップ 記事一覧 ログイン 無料ブログ開設

とあるMetaTraderの備忘秘録 RSSフィード Twitter

人の夢と書いて、儚い(はかない)と読みます。  【かねが為 尽くす努力は水の泡 消えにし後は 澄み渡る空】

2010-05-27

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

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


通貨ペア数が少ないうちは、Stragety Tester 上で手作業で通貨ペアを変更すれば十分です。しかし、ペア数が増えるとかなり面倒になるので、その場合はバッチファイルによるテストを検討したほうが良いでしょう。

…以下、大雑把に説明するので、具体的なやり方は、ご自身で探求ください。^^;


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

f:id:fai_fx:20100526162339p:image

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

f:id:fai_fx:20100526170919p:image

で、

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

こんな感じで、テスト設定ファイルを引数にして実行すればテストが可能です。

※テスト前に、必要なヒストリカルデータをダウンロードしておく必要があります。

※テスト前に、MT4を起動して、Visual Mode を解除して終了させてください。



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

f:id:fai_fx:20100526162338p:image

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


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

f:id:fai_fx:20100526162337p:image


BatchFileMaker.pl を実行すると…

f:id:fai_fx:20100526162336p:image


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

f:id:fai_fx:20100526162335p:image


AutoTest.bat を実行すると…

f:id:fai_fx:20100526162334p:image


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

f:id:fai_fx:20100526162333p:image


TestOptimization=true にすれば、TestExpertParameters で指定した set ファイルに従って Optimization することも可能です。

通貨ペア毎に異なる set ファイルを用いる場合は、TestExpertParameters=macd.set を TestExpertParameters=macd_EURUSD.set のように EURUSD を含めた名前にしてください。




おまけ


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

f:id:fai_fx:20100526182129p:image

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

carcasscarcass 2010/05/27 00:12 faiさんこんばんは。
この前はどうもありがとうございました。
大変便利に使用させて頂いております。

ネタ募集という事で、、faiさんに
1つ気が向いた時にでも作って頂けたら、って思っているものがあるんですが
(レベルの低い話ですみません。)

23Signal_Price-v1みたいな指定した商品の現在値を表示するもので
(*現在値が左右指定で大きく表示できるもの)
テクニカルによる表示色の変化などはなくて良いんですが、
MT4の値は商品によって誤差が生じているものもあるので
それを修正して表示したいのです。
(今は頭の中で修正しています。)
例えば常に-10(マイナス10)など
その値を指定できるような形式で、、、為替ではあまり必要ないかもしれませんね・・

お時間ある時にでも是非ご検討の程宜しくお願い致します。

afaf 2010/05/27 00:14 こんばんは、faiさん!

おみごとです。
バックテストをバッチ処理できるとは知りませんでした。
機会があったら利用させていただきます。

自分、こういうネタはマニアックで大好物ですよ!
今後も頑張ってください!

makimaki 2010/05/27 08:43 おはようございます。
faiさんの記事を毎日楽しんで読んで、勉強させております。有難うございます。
なお、Andy_kumoMTFを愛用させて頂いております。雲の陽転あるいは陰転の時アラートを鳴らすことができればと感じましたので、お時間がある時よろしくお願い致します。

saru999saru999 2010/05/27 19:21 (異なる通貨)
>「バックテストを…自動」
いつもながら、勉強になる記事をありがとうございます。

え〜と。記事は異なる通貨ですね。

(異なるパラメーター)
これを異なるパラメーターを自動でバックテストするには、
それぞれのset1ファイルと、set2ファイルを書いて、
EURUSD.txtの
TestExpertParameters=macd.set
をかえて、、、
え〜と。
あっ。TestReplaceReport=true このままだと上書きされてしまいますよね。

(参考書籍を紹介してください)
すみません。私の能力不足で、この記事がまだ理解できていません(汗
おそらく、Perlと、正規表現と、バッチファイルの知識が足りないからなのでしょうね。
この記事を理解するために、できましたら、この3種類のおすすめ書籍を教えてください。
レベルは ”猿"でもわかるものをお願いしますm(_ _)m

booboo 2010/05/27 21:06 faiさんこんばんは
MT4の平行線にコメントを付けることができますが、たとえば○月○日の何とか指標にぐずぐずした処など、これをチャートの異動に合わせて常にチャートの右側に表示する方法なんてのはあるんでしょうか?
ご存知でしたら教えてください、よろしくお願いします。

linolino 2010/05/27 21:10 最適化テストで労力を費やしているので、これは便利そうです。
パラメータが多いので相関性の低いパラメータを分割して最適化を実行しているのですが(Geneticは使いたくないので)、これを自動化できないでしょうか?
パラメータ1〜3を最適化→最もPFが高かった値を使ってパラメータ4〜6を最適化→以下789・・・
tester\cachesを解析する必要がありそうですが、何とか実現できないでしょうか?

polBpolB 2010/05/27 21:52 faiさんこんばんは。
このTipsは衝撃的ですね。今まで面倒で躊躇していたあんなことやこんなことも自動化出来るとは・・・。

BatchFileMakerTypeB.plのテスト期間の部分をsetファイルに置き換えて変更したら、複数通貨×複数setファイルの設定ファイルを一気に作成できるようになりました。
これで、損益曲線を見るために最適化を使わず1個1個バックテストしていた手間が省けます。ありがとうございます。

daijindaijin 2010/05/27 23:48 初めまして。あまりにも難しいけど興味がある、ということで、いつもROM専門で拝見してます。
あつかましくもお願いがありコメントさせていただきました。
Nonlagdotというインディケーターですが、MTF対応には出来ないでしょうか。
貼り付け方がわからないので名前だけですいません…。
上の時間の平均足の位置や色がわかればと思ったので…。
ご検討よろしくお願いします。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fai_fx/20100527/1274886367