UninitializeReason

初期化解除理由のコードを返します。。

int  UninitializeReason();

戻り値

OnDeinit()が呼び出される前に作成される _UninitReason の値。値は初期化解除に至った理由に依存します。

例:

//+------------------------------------------------------------------+
//| エキスパート初期化関数                                                 |
//+------------------------------------------------------------------+
int OnInit()
 {
//--- 初期化解除理由コードをreason変数に取得する
  int reason=UninitializeReason();
//--- 初期化解除の理由を含むメッセージ文字列を作成し、メッセージを操作ログに送信する
  string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__, reason, UninitializeReasonDescription(reason));
  Print(message);
//--- 成功
  return(INIT_SUCCEEDED);
 }
//+------------------------------------------------------------------+
//| エキスパート初期化解除関数                                             |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
 {
//--- reason仮変数から初期化解除理由コードを含むメッセージ文字列を作成し、メッセージを操作ログに送信する
  string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__, reason, UninitializeReasonDescription(reason));
  Print(message);
 }
//+------------------------------------------------------------------+
//| エキスパートティック関数                                                 |
//+------------------------------------------------------------------+
void OnTick()
 {
 }
//+------------------------------------------------------------------+
//| 初期化解除の理由コードの説明を戻す                                       |
//+------------------------------------------------------------------+
string UninitializeReasonDescription(const int reason)
 {
  switch(reason)
    {
    //--- EAはExpertRemove()関数の呼び出しを停止した
    case REASON_PROGRAM :
      return("Expert Advisor terminated its operation by calling the ExpertRemove() function");
    //--- チャートからプログラムを削除した
    case REASON_REMOVE :
      return("Program has been deleted from the chart");
    //--- プログラムが再コンパイルされた
    case REASON_RECOMPILE :
      return("Program has been recompiled");
    //--- シンボルまたはチャート期間が変更された
    case REASON_CHARTCHANGE :
      return("Symbol or chart period has been changed");
    //--- チャートが閉じられた
    case REASON_CHARTCLOSE :
      return("Chart has been closed");
    //--- ユーザーによって入力が変更された
    case REASON_PARAMETERS :
      return("Input parameters have been changed by a user");
    //--- 別のアカウントが有効化されたか、アカウント設定の変更により取引サーバーへの再接続が発生した
    case REASON_ACCOUNT :
      return("Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings");
    //--- 別の定形チャートが適用された
    case REASON_TEMPLATE :
      return("A new template has been applied");
    //--- OnInit()ハンドラがゼロ以外の値を返した
    case REASON_INITFAILED :
      return("This value means that OnInit() handler has returned a nonzero value");
    //--- ターミナルが閉じられた
    case REASON_CLOSE :
      return("Terminal has been closed");
    }
 
//--- 初期化解除の理由は不明
  return("Unknown reason");
 }