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