Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен OpenCL? MQL5 предоставляет такую возможность!
The_Sheikh
15
The_Sheikh 2016.06.29 12:10 
Подскажите, можно ли узнать какое конкретно значение вернула функция OnInit()?
Vitalie Postolache
11035
Vitalie Postolache 2016.06.29 13:44  
В журнале запись должна быть.
The_Sheikh
15
The_Sheikh 2016.06.29 13:53  
Обязательно лезть в журнал? Кстати, в журнале нету. Есть другой способ?
Vitalie Postolache
11035
Vitalie Postolache 2016.06.29 14:12  

The_Sheikh:
Обязательно лезть в журнал? Кстати, в журнале нету. Есть другой способ?

В терминале несколько журналов. Надо смотреть журнал экспертов, проще всего  на вкладке экспертов терминала.

Вот пример возврата неудачной инициализации и сразу потом - удачной.


Если инит возвращает INIT_FAILED, то в журнале так и будет записано - initialization failed (1)

А больше вариантов как бы и нет.
The_Sheikh
15
The_Sheikh 2016.06.29 14:27  

Скверно.

Спасибо!

LRA
321
LRA 2016.06.29 15:55  
Если в OnInit() есть оператор, возвращающий значение вроде return(Результат) , то перед ним поставить Alert("Возвращаем = ",Результат);
The_Sheikh
15
The_Sheikh 2016.06.30 00:46  
Смысл немного в другом. Нужно знать значение инициализации, чтобы ф-я OnDeinit() знала, какой блок кода деинициализировать. Никакого толку от return(n), если результат уходит в журнал и недоступен программе. Придётся вводить дополнительную переменную для хранения этого значения.
Vitalie Postolache
11035
Vitalie Postolache 2016.06.30 08:54  

The_Sheikh:
Смысл немного в другом. Нужно знать значение инициализации, чтобы ф-я OnDeinit() знала, какой блок кода деинициализировать. Никакого толку от return(n), если результат уходит в журнал и недоступен программе. Придётся вводить дополнительную переменную для хранения этого значения.

Бессмысленная затея. Когда срабатывает OnDeinit(), весь остальной код уже не активен, ни о какой поблочной деинициализации речи быть не может. Так вот, когда OnInit() возвращает значение, отличное от нуля, срабатывает сразу же OnDeinit(), мимо остального кода, а потом программа выгружается из памяти с записью в журнал. В тяжелых случаях крашит терминал и тогда даже в журнал ничего не запишет.

Mislaid
554
Mislaid 2016.07.04 03:22  
The_Sheikh:
Смысл немного в другом. Нужно знать значение инициализации, чтобы ф-я OnDeinit() знала, какой блок кода деинициализировать. Никакого толку от return(n), если результат уходит в журнал и недоступен программе. Придётся вводить дополнительную переменную для хранения этого значения.
Скорее всего, Вас интересует причина переинициализации. Для этого в OnInit() используйте функцию UninitializeReason()
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий