[MQL] OnDeinit()関数のreason code一覧

OnDeinit()関数の引数reasonは種類が多いので覚えるのが結構大変です。

私は覚えるのをあきらめて一覧にすることにしました。

OnDeinit()関数とは

OnDeinit()関数とは、EAやインジケーターの終了時に呼び出される関数です。

終了時に行いたい処理がある場合に記述します。よくある使用例としては、インジの終了時にオブジェクトを削除するなどです。

OnDeinit()関数の定義は下記の通り。

void OnDeinit(const int reason){
  //ここに終了時に実行したい処理を記述する
}

引数reasonにはプログラム終了の理由(きっかけ、原因)を示す定数が入ります。reasonはプログラムの終了理由に応じて自動で入力されるため、自分で入力することはありません。

OnDeinit()関数のreason一覧

下記表はOnDeinit()関数のreason一覧です。英語はMQL4のマニュアルの文章そのまま。日本語は私のメモ。

reason 説明
REASON_PROGRAM 0 Expert Advisor terminated its operation by calling the ExpertRemove() function
【解釈】ExpertRemove()関数によってEAを終了した
【注意】ExpertRemove()関数はEAでのみ機能するため、本reasonはEAのみで使う
REASON_REMOVE 1 Program has been deleted from the chart
【解釈】プログラムがチャートから外された
【注意】ChartIndicatorDelete()関数でインジが外された場合もこのreasonになる。
REASON_RECOMPILE 2 Program has been recompiled
【解釈】プログラムがコンパイルされた
REASON_CHARTCHANGE 3 Symbol or chart period has been changed
【解釈】チャートのシンボルまたは時間足が変更された
REASON_CHARTCLOSE 4 Chart has been closed
【解釈】チャートが閉じられた
【注意】組表示の切り替えもこのreasonになる
REASON_PARAMETERS 5 Input parameters have been changed by a user
【解釈】ユーザーが設定パラメータの値を変更した
REASON_ACCOUNT 6 Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings
【解釈】アカウントが変更されたまたはアカウント設定の変更によりサーバーに再接続した
REASON_TEMPLATE 7 A new template has been applied
【解釈】定型チャートが適用された
REASON_INITFAILED 8 This value means that OnInit() handler has returned a nonzero value
【解釈】初期化処理(OnInit関数)が失敗した
REASON_CLOSE 9 Terminal has been closed
【解釈】MT4を終了した

まとめ

reason codeをしっかり区別して使い分けられるようになると、終了時の処理を場合分けできるので便利です。

コメント

この記事へのコメント(0 件)