EAとインジケーターでのグローバル変数の挙動の違い

インジケーターとEAでは、グローバル変数の挙動が違うことご存じでしょうか?

毎回忘れて頭を悩ますので、記録がてら投稿しようと思いまして。

ここで言うグローバル変数というのはMT4に設定する変数ではなく、全ブロックをスコープとするプログラム内部の変数のことです。OnInitやOnTickの外で宣言している変数のことですね。

※このグローバル変数のことではありません

時間足や入力パラメーターを変更すると、OnDeInit→OnInitの一連の処理(再初期化)が実行されます。

EAでグローバル変数を宣言した場合、この再初期化が実行されても値はリセットされません。値は保持されたままになります。

他方、インジケーターの場合、再初期化が実行されると値は保持されずリセットされてしまいます。

なぜこんな仕様なのか疑問なのですが、MT4はおろかMT5でも同じなので、運営は問題視していないようですね。

なのでEAのコードをそのままインジケーターに(逆もしかり)移植しようとすると、予期せぬ不具合に遭遇するかもしれません。

グローバル変数はEAでは保持されるが、インジケーターでは保持されない仕様、いい加減覚えておきたいなぁ。

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

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

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

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

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

アイキャッチ

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

>

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

CTR IMG