前回のリンク
次回のリンク(予定)
今回はMQL5で同じプログラムを複数回実行して結果を取得する方法を紹介します.
この方法は確率的な取引プログラムなどの同じ為替時系列を使っても毎回結果の変わるプログラムを検証する際に用いることを想定しています.
今回の記事はFXオートトレードプログラムを開発する会(9)の応用です.
複数回実行のためのbatファイル
以下のbatファイルを作成後ダブルクリックか,コマンドプロンプトから実行できます.
繰り返し10回テストを行う際のbatファイルの疑似コード([]内は各自の環境に書き換えてください)
@echo off setlocal pushd "%~dp0" c: cd [terminal64.exeのあるフォルダのpath] for /l %%i in (1,1,10) do ( .\terminal64.exe /config:[iniファイルを保存したフォルダへのpath] ) popd endlocal pause
実際に動くコードの例(環境に依存するのでコピーしてもそのままでは動きません)
@echo off setlocal pushd "%~dp0" c: cd "C:\Program Files\OANDA MetaTrader 5\" for /l %%i in (1,1,10) do ( .\terminal64.exe /config:D:\Sciotein\FX\myconfig.ini ) popd endlocal pause
上記batファイルの実行に必要なこと
iniファイルの作成 詳細は以前のnotionを参考 保存場所は大体どこでもok.
(とりあえず実行の際”Expert”と”[TesterInputs]”は書き換える必要がある可能性が高いです.)
作成したプログラムは一度コンパイルしてex5実行ファイルを作成しておく必要があります.
iniファイルの例
;エキスパートアドバイザーの単一テスト: random20201219, USDJPY H1, 全ティック, 2019.01.01 - 2020.11.13 [Tester] ;使用したいEA名に書き換える.Expertsフォルダの直下でない場合はパスも書く Expert="\\MyExperts\\random20201219.ex5" ;銘柄 Symbol=USDJPY ;ローソク足の時間 Period=H1 Optimization=0 Model=0 ;テストの開始日時 FromDate=2019.01.01 ;テストの終了日時 ToDate=2020.11.13 ForwardMode=0 ;初期所持金 Deposit=10000 ;所持金の通貨 Currency=USD Leverage=100 ExecutionMode=0 OptimizationCriterion=0 Visual=0 ;出力名.フォルダが存在すれば/temp_str/result20201219のように書くことも可能 Report=result20201219 ;1:同じ名前があった場合に置き換える 0:最後に[n+1]をついか ReplaceReport=0 ;1:実行後にターミナルを終了する 0:ターミナルを終了しない ShutdownTerminal=1 ;プログラム内でinputで宣言した変数の初期値等必要に応じて書き換える必要あり [TesterInputs] MaximumRisk=0.02||0.02||0.002000||0.200000||N DecreaseFactor=3||3||0.300000||30.000000||N
行頭の”;”以降はコメント
出力結果の確認
デフォルトでは結果は
C:\Users\[ユーザー名]\AppData\Roaming\MetaQuotes\Terminal\D0E8…
のような場所に出力される.
メモ:AppDataの出し方
フォルダ上部の表示タブの中の隠しファイルの項目にチェックを入れる.

次回のリンクはこちら(予定)
コメント