ヾ(´・ω・`)ノ゙

2015年02月26日

バックテストで起きた現象

EAのテストをしていてなんかへんな現象が起きた
USDJPYのテストをして通貨ペアを切り替えてEURUSDのテストをした時に
切り替えて1回目のテストがなぜかトレードされなかったので
なぜ(´・ω・`)???と思ったら
よくわからないけど原因はわかった

以下のようなプログラムだと
2015_02_26_109.png

CTestのコンストラクタ
OnInit()
テストが終わって
OnDeinit()
CTestのデストラクタ

という順番で呼び出されますが
どうもOnInit()のまえに _Point, _Digitsの数値を使おうとすると
このタイミングでは前回テスト時の値になっているみたい

USDJPYのテストをしてみるとこんな感じ
2015_02_26_110.png

次にEURUSDに切り替えてテストをしてみると

2015_02_26_111.png
となりました
_Pointと_Digitsの値がUSDJPYの時のままになっています
MarketInfoを使って取得したほうは0.00001になってますな
さらにもう一回テストをすれば
2015_02_26_112.png
このように0.00001になるりました

トレード用クラスのコンストラクタで_Pointとか使っていたから
そのせいで_Pointの値が違う通貨ペアに切り替えた直後のテストがうまくできなかったんですね

こうすればOnInit()でCTestのコンストラクタが呼ばれるのでこれで大丈夫でした
2015_02_26_113.png

たしか前にもこの現象に遭遇したことがあったのですが、
たぶんその時は気のせいだと思ったんです(´・ω・`)


ラベル:MQL4 MT4
posted by hage at 21:59| MT4 | このブログの読者になる | 更新情報をチェックする