Bitcoin 裁定取引と自動取引 abitra.netのブログ

Bitcoinの自動売買のあれこれ

MT4 ストラテジーテスターを一括で複数の通貨ペア、複数のEAを行う方法 その2


前回の記事で下準備の一部が完了しました。
abitra.hatenablog.com



あとはやらなくても良いけど個人的に管理しやすい為の設定など。

MT4 Portable 起動用の設定(ini)


大元のMT4フォルダに Portable_iniフォルダを新規作成。
※名前は何でもいいです。コピー先のフォルダには不要です。

f:id:hogehoge_kato:20190815012334p:plain


このフォルダに後で記載する設定ファイルが書き込まれるます。


testerにsetファイルのフォルダとtest_reportのフォルダ作成


f:id:hogehoge_kato:20190815012403p:plain


setフォルダには最適化に必要な設定のファイルを追加して下さい。


f:id:hogehoge_kato:20190815012415p:plain


test_reportレポートフォルダは特に何もしなくていいです。
ストラテジーテスター完了するとレポートが入るフォルダになります。


準備完了。複数通貨をストラテジーテスターで一括でバックテスト


私はrubyで書いています。


バックテストのコード。
以下コードを動かせば8つのMT4が立ち上がりバックテストが始まります。

pair = ["USDJPY", "USDCAD", "NZDUSD", "GBPUSD", "GBPJPY", "EURUSD", "EURJPY", "EURGBP"]
period = "H4"
count = 1
testexpert="エキスパート名"

pair.each{|var|
  hoge = "
  Server=Alpari-Demo
  Login=************
  Password=*************
  TestExpert=#{testexpert}
  TestExpertParameters=set\\bbbbb.set
  TestSymbol=#{var}
  TestPeriod=#{period}
  TestModel=0
  TestRecalculate=false
  TestOptimization=true
  TestDateEnable=true
  TestFromDate=2014.01.01
  TestToDate=2018.08.14
  TestReport=tester\\test_report\\#{testexpert}_#{var}_#{period}_Report
  TestReplaceReport=True
  TestShutdownTerminal=false
  "
  open("portable_ini\\#{var}#{period}.ini", 'w'){|f|
    f.puts hoge
  }

  if count == 1
    Thread.new do #Threadで立ち上げる
      aaa = "\"C:/Users/hogehoge/デスクトップ/MT4_alpari/terminal.exe\" /portable \"C:/Users/hogehoge/デスクトップ/MT4_alpari/portable_ini/#{var}#{period}.ini\""
      system(aaa)
    end
  end

  if count > 1
    Thread.new do #Threadで立ち上げる
      bbb = "\"C:/Users/hogehoge/デスクトップ/MT4_alpari/MT4_alpari_#{count}/terminal.exe\" /portable \"C:/Users/hogehoge/デスクトップ/MT4_alpari/portable_ini/#{var}#{period}.ini\""
      system(bbb)
    end
  end
  sleep(1)
  count = count + 1
}


少し解説

f:id:hogehoge_kato:20190815012425p:plain



上記プログラムを動かすとMT4が立ち上がりと同時にバックテストが動きます。
細かいストラテジーテスターの設定は他サイトなどを参考に設定して頂くと良いかと考えます。





バックテスト開始してしばらく待つとレポートが出力されます。


場所は本記事の最初に作成したtesterのtest_reportになります。
※出力先は任意で決めれます。

f:id:hogehoge_kato:20190815012442p:plain



ストラテジーテスターのバックテスト完了


基本は以上です。
細かいところは端折っているのですが何となくの雰囲気は掴めたかと考えます。


"MT4BP" "MT4バッチプロセッサー"の場合はどの様な処理をしているのか分かりませんが以前の資料でMT4を8個同時に動かす的な資料を見た記憶があるので近い感じではあるのかなーと考えます。

もちろん"MT4BP" "MT4バッチプロセッサー"の方が色々設定出来るかと考えます。


実際8個のMT4で同時にバックテストしてみた結果


バックテスト中ですがめちゃくちゃPCの動作が遅くなります。
ブラウザ開くも画像ファイルがなかなか読み込まれなかったりマウスのポインタがカクついたりしました。


バックテストは成功したの?


バックテストは成功したのですが何点か問題もありました。


最適化結果のレポートを出力するもレポートだけではパラメータの確認が出来ません。
結局各MT4の最適化結果を確認しないといけない。(レポートにパラメータの入力表示出来るといいのになー)


f:id:hogehoge_kato:20190815012459p:plain


たまーにですが読み込まれなかった通貨ペアあがりました。
その時は動かなかったMT4を手動で動かしたりました。一度動かした後はプログラムでも問題なく動いたり。
理由はよく分からない。。。

今後は使っていく?


複数通貨ペアでバックテストす時は便利だから使っていこうかなーと。
通貨ペアだけでなく15分足、30分足、一時間足、4時間足と同時にバックテストしたい時など時々訪れるのでその時は便利なよかーん。



もし何か不明な点などあればコメントなどでお気軽にご連絡下さいませー