//+------------------------------------------------------------------+ //| エキスパート初期化関数 | //+------------------------------------------------------------------+ 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"); } |