グローバル変数の初期化に注意せよ

アイキャッチ

通貨ペアや時間足の変更でOnInit関数は都度呼び出される

仕掛け時間帯指定機能仕掛け時間帯指定機能に指定時刻での強制決済機能を足してみたに不具合があることに今更気づきました。

結論から言えば、gEntryTimeFlgTrueCntというグローバル変数をOnInit関数内で初期化し忘れていました。

具体的には、gEntryTimeFlgTrueCnt = 0;が抜けていました。

初期化しないと、OnInit関数が呼び出される度にgEntryTimeFlgTrueCntは加算されていきます。

すると、最大3までしか取らないはずのgEntryTimeFlgTrueCntは、4,5,6…と延々と増えていき、結果として意図しない動作になってしまうわけです。

通貨ペアや時間足を変更しない等の方法でOnInit関数の再呼び出しを防いでいる間は問題ないのですが、チャートにEAを適用後に時間足を変えたりすると問題が起きるんですね。

バックテストで拾えないこの手の問題はなかなか厄介です。

なお、上記記事に記載しているコードは既に修正済みです。

スポンサードリンク

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)

にほんブログ村 為替ブログ FX システムトレード派へ

コメントを残す



eighteen + 6 =