Причины деинициализации
Коды причины деинициализации эксперта, возвращаемые функцией UninitializeReason(). Могут иметь любые из следующих значений:
|
|
|
REASON_PROGRAM
|
0
|
Эксперт прекратил свою работу, вызвав функцию ExpertRemove()
|
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(const int reason).
Индикаторы принимают пока только код 1(REASON_REMOVE) и код 2(REASON_RECOMPILE).
Пример:
//+------------------------------------------------------------------+
//| get text description |
//+------------------------------------------------------------------+
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;
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- Первый способ получить код причины деинициализации
Print(__FUNCTION__,"_Код причины деинициализации = ",reason);
//--- Второй способ получить код причины деинициализации
Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));
} |
|