Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Этот вопрос решается как 2 пальца... сами знаете что...
В OnDeinit надо перед удалением объекта ставить условие причины деинициализации... Если НЕ смена периода, то объект удалить. И ВСЁ...
Да, я могу не удалять какой то объект или ресурс при смене ТФ, могу сохранить даже некоторые небольшие массивы через объект-ресурс, и записать в ресурс информацию о том, что произошла смена ТФ, но в том -то и дело, что Деюнит может начать выполняться после того , как выполнился Юнит в новом таймфрейме, как я по вашему должет сообщить юниту что была смена ТФ и надо считать старые данные, вот и приходится с бубнами создавать функции слежения и ждать уже не в Юнит , а в OnTimer. Это что, не криво что-ли?
Какую логику портит?
При смене таймфрейма создаётся новая копия индикатора, которая ничего не знает о предыдущей копии. Какое-то время (очень короткое) обе копии индикатора существуют параллельно. Потом предыдущая копия выгружается.
Читайте документацию https://www.mql5.com/ru/docs/runtime/running
Прочитал описание по указанной ссылке, но такой информации, как Вы дали, не нашел. И, если это действительно так, то это огромная проблема для разработчиков индикаторов. Очень странно и очень плохо, что принята такая логика перезагрузки индикаторов при смене таймфрейма. К чему существование двух копий одного и того же индикатора в памяти? Кому это удобно? Что это даёт? Ведь логичнее было бы сначала завершить выполнение одной копии индикатора, выгрузить ее и только потом загрузить следующую копию.
И что ВСЁ!?
Я экспериментировал и использую этот код причины(REASON_CHARTCHANGE) во всю. А что толку если все переменные снова устаналиваются в первоначальное состояние, а OnDeinit может выполниться после OnInit нового ТФ
Slava отвечал на этот вопрос, новый индикатор, новые вычисления. И это справедливо.
И видимо эта проблема никогда не будет решена.
А я верю в команду разработчиков, они классные ребята и сделали невероятно много и сделают еще больше. Просто руки еще не дошли. Правда добиваться от них обратной связи тоже всегда с бубнами приходиться. :))
Своей задачей считаю убедить их в том, что это надо сделать. Хотя не исключаю, что они меня убедят, что этого лучше не делать, может я что-то не догоняю.
А я верю в команду разработчиков, они классные ребята и сделали невероятно много и сделают еще больше. Просто руки еще не дошли. Правда добиваться от них обратной связи тоже всегда с бубнами приходиться. :))
Своей задачей считаю убедить их в том, что это надо сделать. Хотя не исключаю, что они меня убедят, что этого лучше не делать, может я что-то не догоняю.
Slawa, а что значит фраза в документации "Библиотеки не обрабатывают никаких событий"?
Очень туманно
- При Ините устанавливаю цвет основного графика прозрачным.
Черчу свой график (по своим параметрам)
Так как хочу чтобы после снятия моего индикатора восстанавливал цвет основного графика
- В ДеИните восстанавливаю цвет основного графика
При смене ТФ подразумеваю вначале ДеИнит (восстановление цвета), а потом Инит (Опять прозрачным)
Так выполнение команд идет не последовательно, периодически при смене ТФ
накладываются основной график (восстановленным цветом) на мой индикатор.
Вот к примеру одна "порча логики".
Может быть попробовать графическим объектам присваивать в качестве составляющей префикса их имени период ТФ,
а потом что-то вроде такого применить:
- При Ините устанавливаю цвет основного графика прозрачным.
Черчу свой график (по своим параметрам)
Так как хочу чтобы после снятия моего индикатора восстанавливал цвет основного графика
- В ДеИните восстанавливаю цвет основного графика
При смене ТФ подразумеваю вначале ДеИнит (восстановление цвета), а потом Инит (Опять прозрачным)
Так выполнение команд идет не последовательно, периодически при смене ТФ
накладываются основной график (восстановленным цветом) на мой индикатор.
Вот к примеру одна "порча логики".
И что ВСЁ!?
Я экспериментировал и использую этот код причины(REASON_CHARTCHANGE) во всю. А что толку если все переменные снова устаналиваются в первоначальное состояние, а OnDeinit может выполниться после OnInit нового ТФ
Попробуйте обновить терминал до версии 1065. В предыдущих версиях была ошибка переинициализации как раз при смене таймфрема. Может поможет :)
https://www.mql5.com/ru/forum/187690
Попробуйте обновить терминал до версии 1065. В предыдущих версиях была ошибка переинициализации как раз при смене таймфрема. Может поможет :)
https://www.mql5.com/ru/forum/187690