OnDeinit Reason

 

Кто может подсказать как называется enum причин деинициализации?

Другими словами, к какому enum относятся:

Константа

Значение

Описание

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

Терминал был закрыт

 

судя по сигнатуре функции void OnDeinit(const int reason) - это константы, а не перечисление, в справке, как Вы заметили, тоже нет ссылки или указания имени перечисления 

если хотите в текстовом виде причину деинициализации видеть, я бы так попробовал сделать:

enum ENUM_REASON{REASON__PROGRAM,REASON__REMOVE,REASON__RECOMPILE,REASON__CHARTCHANGE,REASON__CHARTCLOSE,REASON__PARAMETERS,REASON__ACCOUNT,REASON__TEMPLATE,REASON__INITFAILED,REASON__CLOSE};

void OnDeinit(const int reason)
  {
   Print(EnumToString((ENUM_REASON)reason));
  }

т.е. я создал пользовательское перечисление с похожими по названию списком значений (добавил дополнительный знак _ )

 
Быстро найти нужный enum
Print(typename(REASON_CLOSE)); // int
 
vvebus:

Кто может подсказать как называется enum причин деинициализации?

Другими словами, к какому enum относятся:

Константа

Значение

Описание

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

Терминал был закрыт

Это не enum, а #define
 
Vladimir Simakov:
Это не enum, а #define

На который не действует #undef.

 
Vladimir Simakov:
Это не enum, а #define
fxsaber:

На который не действует #undef.

а как Вы это определили? (что это #define )

 
fxsaber:

На который не действует #undef.

Но на который прекрасно реагирует #ifdef
 
Igor Makanu:

а как Вы это определили? (что это #define )

Vladimir Simakov:
Но на который прекрасно реагирует #ifdef
 
fxsaber:

ОК, благодарю

было подозрение, что достаточно красного цвета в МЕ для  #define - оказывается нужно чрез #ifdef  проверять

ЗЫ: вопрос недавно себе задавал, в МТ4 работает TRUE , а в МТ5 будет ошибка нужно писать true , хотя МЕ что там что там подсветит TRUE красным, вот и не мог понять как эти константы в MQL получены

 
fxsaber:
Быстро найти нужный enum
Любой enum - int. В чём соль?
 
Artyom Trishkin:
Любой enum - int. В чём соль?

наверное правильно, справка по enum находится в разделе: https://www.mql5.com/ru/docs/basis/types/integer/enumeration

Справочник MQL5  - Основы языка - Типы данных - Целые типы - Перечисления