int OnInit() { int reason = UninitializeReason(); if(reason == REASON_CHARTCHANGE || reason == REASON_TEMPLATE) return(INIT_SUCCEEDED); if(reason == REASON_PARAMETERS) { InitParams(); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { if(reason==REASON_CHARTCHANGE || reason==REASON_TEMPLATE || reason==REASON_PARAMETERS) return;
Перестал пользоваться этими функциями.
Для фриланса и Маркета, наверное, без них не обойтись.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2017.11.30 09:48
Памятка
Действие/тип программы | Смена ТФ или символа | Смена счета |
---|---|---|
Индикатор | Запуск OnDeinit и OnInit, объект глобального класса меняется (полная перезагрузка). | Ничего не происходит, кроме обнуления prev_calculated. |
Советник | Запуск OnDeinit и OnInit, объект глобального класса не меняется. | Запуск OnDeinit и OnInit, объект глобального класса меняется (полная перезагрузка). |
Перестал пользоваться этими функциями.
Для фриланса и Маркета, наверное, без них не обойтись.
Смену входных параметров надо как-то отслеживать?
Смену входных параметров надо как-то отслеживать?
Для себя - нет.
Для себя - нет.
Кстати, я так до конца и не понимаю смысла сбрасывать глобальные переменные индикатора при смене ТФ. Кто чего умного скажет?
Кстати, я так до конца и не понимаю смысла сбрасывать глобальные переменные индикатора при смене ТФ. Кто чего умного скажет?
Смысл там архитектурный: при смене ТФ индикатор полностью выгружается и загружается его копия. Где-то давно была тема о том, что порядок выгрузки и загрузки индикаторов не гарантирован. То есть при смене ТФ вполне может быть раньше выполнен OnInit() копии индикатора, чем OnDeinit() текущего индикатора. В итоге две копии индикатора будут какое-то время существовать параллельно.
Для экспертов выгрузка не требуется. Почему так не сделано для индикаторов, трудно сказать. Видимо, есть на то какие-то объективные сложности в реализации.
Смысл там архитектурный: при смене ТФ индикатор полностью выгружается и загружается его копия. Где-то давно была тема о том, что порядок выгрузки и загрузки индикаторов не гарантирован. То есть при смене ТФ вполне может быть раньше выполнен OnInit() копии индикатора, чем OnDeinit() текущего индикатора. В итоге две копии индикатора будут какое-то время существовать параллельно.
https://www.mql5.com/ru/code/18138
- голосов: 26
- 2017.04.17
- fxsaber
- www.mql5.com
Век живи, век учись. Я так не делал, но, считаю, что очень даже полезно.
Хотя, лично в моем случае - необходимость в подобном коде отсутствует, мои эксперты - никогда не глядят на таймфрейм и символ графика, работают по тем, которые в них заложены (можно сделать и "текущий" - тогда они посмотрят, но мне это не надо).
В принципе, код совершенно верный, стоящий для применения.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования