前回のリンク
次回のリンク(予定)

今回は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の出し方

フォルダ上部の表示タブの中の隠しファイルの項目にチェックを入れる.

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


N

博士後期課程学生 研究中に気づいた事を中心に記事を作成していきます.研究内容は主にヒト運動計測と脳波解析.

0件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA