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