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

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

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

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

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

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

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

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

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

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

MT4の無料プログラミング講座

メルマガ登録して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG