ブログタイトルを「FX自動売買システム開発部」から「autoFX」に変更しました!

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

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

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

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

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

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

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

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

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

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

MQL4プログラミングの最新記事8件

>完全放ったらかしEA 「AutoEndlessCatchRange」

完全放ったらかしEA 「AutoEndlessCatchRange」

「本業が忙しい!」「でも資産運用したい!」そんなあなたに最適なEAです。兼業トレーダーの方はチャートを毎日みて分析してトレードする時間はなかなか確保できないものです。トレードは本EAに任せて、本業やプライベートの時間をもっと増やしませんか?元々は自分自身のために開発したEAですので、手抜き無しのガチものです。

CTR IMG