UninitializeReason

返回代码 无法初始化原因

int  UninitializeReason();

返回值

_UninitReason调用之前返回OnDeinit() 值,该值依靠导致无法初始化的原因。

示例:

//+------------------------------------------------------------------+
//| EA交易初始化函数                                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 将去初始化的原因代码放入'reason'变量中
   int reason=UninitializeReason();
//--- 创建带有去初始化原因的消息字符串,并将该消息发送到日志
   string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__reasonUninitializeReasonDescription(reason));
   Print(message);
//--- 成功
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| EA交易去初始化函数                                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 从'reason'形式变量中创建带有去初始化原因的消息字符串,并将该消息发送到日志
   string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__reasonUninitializeReasonDescription(reason));
   Print(message);
  }
//+------------------------------------------------------------------+
//| EA报价函数                                                        |
//+------------------------------------------------------------------+
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");
  }