不能初始化原因代码
不能初始化原因代码
使用 UninitializeReason() 函数返回初始化原因代码,可能值如下:
| 常量 | 值 | 描述 |
|---|---|---|
| REASON_PROGRAM | 0 | 通过调用 ExpertRemove()函数EA交易终止操作 |
| REASON_REMOVE | 1 | 从图表中删除程序 |
| REASON_RECOMPILE | 2 | 程序重新编译 |
| REASON_CHARTCHANGE | 3 | 更改交易品种或图表周期 |
| REASON_CHARTCLOSE | 4 | 关闭图表 |
| REASON_PARAMETERS | 5 | 使用者改变输入参数 |
| REASON_ACCOUNT | 6 | 由于账户设置的改变,会产生激活另一个账户或者重新连接交易服务器的情况。 |
| REASON_TEMPLATE | 7 | 应用新模板 |
| REASON_INITFAILED | 8 | 值代表 OnInit()处理器,返回非零值 |
| REASON_CLOSE | 9 | 程序端已关闭 |
无法初始化原因代码通过预定函数 OnDeinit(整数常量原因)传递参数。
示例:
//+------------------------------------------------------------------+
//| 获得文本描述 |
//+------------------------------------------------------------------+
string getUninitReasonText(int reasonCode)
{
string text="";
//---
switch(reasonCode)
{
case REASON_ACCOUNT:
text="Account was changed";break;
case REASON_CHARTCHANGE:
text="Symbol or timeframe was changed";break;
case REASON_CHARTCLOSE:
text="Chart was closed";break;
case REASON_PARAMETERS:
text="Input-parameter was changed";break;
case REASON_RECOMPILE:
text="Program "+__FILE__+" was recompiled";break;
case REASON_REMOVE:
text="Program "+__FILE__+" was removed from chart";break;
case REASON_TEMPLATE:
text="New template was applied to chart";break;
default:text="Another reason";
}
//---
return text;
}
//+------------------------------------------------------------------+
//| 专家无法初始化函数 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- 获得无法初始化原因代码的第一种方法
Print(__FUNCTION__,"_Uninitalization reason code = ",reason);
//--- 获得无法初始化原因代码的第二种方法
Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));
}