はじめに
私個人の備忘録的な要素が強いですが、参考情報として記載しておきます。
それぞれの関数が実行されるタイミング
OnInitはインジケーターやEAの初回読み込み時に実行される関数で、DeInitはインジケーターやEAを終了させる時に実行される関数ですが、もう少し細かいレベルでどういう時に実行されるのかを理解しておきたく、本記事ではそれぞれの関数にprintf関数を仕込み、色々な操作を行って実際に実行されたタイミングをまとめてみました。
①インジケーター初回実行時
チャートに表示するタイミングでOnInitが実行されます。DeInitは実行されません。
②MT5起動時
インジケーターを表示させたままMT5を終了し、再度立ち上げた場合は、立ち上げ時にOnInitのみ実行されます。
③チャート内容を違う銘柄(通貨)に変更した時
DeInitが実行された後、OnInitが実行されます。
④複数のチャートを表示させ、切り替えた時
OnInit、DeInit共に実行されません。
⑤チャートのタイムフレームを切り替えた時
DeInitが実行された後、OnInitが実行されます。
⑥別のインジケーターを追加表示した時
OnInit、DeInit共に実行されません。(トレンド系でもオシレーター系でも実行されません)
⑦定型チャートを表示させた時
DeInitが実行されます。(定型チャートにはインジケーター類は無し)
とりあえず以上
いかがだったでしょうか?個人的にはタイムフレーム切り替え時にDeInitが実行されるとは思ってませんでした。多分大丈夫だと思いますが、運用中のEAに対して念のため動作確認を行っておきたいと思います。今後もわかった事があれば本記事に追記していきたいと思います。
今回の記事がどなたかの役に立てば幸いです。