このページに書かれていること
プログラム内で使う変数(内部記憶のようなイメージ)は通常プログラムが終了するとリセットされます。
そのためEAを作る際変数に頼った書き方をすると動作が止まった時に不具合が起きる可能性が高くなります(プログラムは書けても経験が足りていない人はこういうところでミスします)
MetaTraderには終了しても記憶を維持できる仕組みがあります。
このページではその仕組み(クライアントターミナルのグローバル変数)について解説しています。
クライアントターミナルのグローバル変数の説明と確認方法
MT4は再起動されると今まで記憶していた変数をリセットしてしまいます。
ステップ実行系の処理がEAに入っていた場合、これが不具合を引き起こす原因になります。
例)①条件Aをクリア→②条件Bをクリア→③条件Cをクリア→エントリーというロジックの場合
②条件Bをクリアした段階でMT4が強制終了(PC電源が落ちたなど)してしまうと、再起動した時にはまた①から再スタートとなってしまいます。
当サイトでEA・インジケータを製作する場合には、なるべくこのようなことが起こらない書き方をします。
しかし場合によってはそれぞれの処理をステップとして記録しないと実現困難なロジックもあります。
そんな時はMT4が再起動されても以前の状態から復帰できるように「MT4自体に変数を記録してしまう」という方法を取ります。
これを「クライアントターミナルのグローバル変数(Global Variables of the Client Terminal)」と呼びます。
記録された変数は「ツール」→「グローバル変数」から確認することができます。
上の図では「global_A」というグローバル変数が記録されていることになります。
グローバル変数が邪魔になったら
この機能はリカバリーには便利な機能ですが、途中のステップでEAを停止し時間をおいて稼動させるといった時には邪魔になります。
本当はリセットされた状態から始めたいのに以前に記録していたグローバル変数のせいで途中のステップから始まってしまうためです。
こんな時はターミナルのグローバル変数を削除してあげます。
方法は変数を選択し、右側の「削除」を押せば完了です。