Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
komposter
Вы правы. Я допустил ошибку.
Спасибо за ответ.
Опечатка в Справочник MQL5 - Стандартная библиотека - Классы для организации данных - CArrayObj (на сайте и в хелпе):
2. Механизм управления памятью выключен.
В этом случае, CArrayObj не ответствечает за освобождение памяти
Документация. Раздел Статические переменные.
"...Статические переменные существуют с момента выполнения программы и инициализируются однократно перед вызовом специализированной функции OnInit()..."
Проверочный код советника:
"Кладем" советник на график:
Не удаляя советника с графика, меняем период графика:
Так и должно работать?
Я на самом деле трактовал информацию из документации как принудительная инициализация статических переменных при любом вызове функции OnInit(), независимо: вызвана ли причиной перекомпиляции или сменой символа, или еще чем-то...
Выходит, я ошибался. Прошу просвятить: какие есть исключения в данном правиле?
При смене входных параметров - та же самая "петрушка".
А вот при смене счета, отработка идет правильная - статические переменные переинициализируются.
Интересно, как сменить символ графика, не удаляя эксперта (REASON_CHARTCHANGE)?
Документация. Раздел Статические переменные.
"...Статические переменные существуют с момента выполнения программы и инициализируются однократно перед вызовом специализированной функции OnInit()..."
Проверочный код советника:
"Кладем" советник на график:
Не удаляя советника с графика, меняем период графика:
Так и должно работать?
Да, так и должно работать.
Программа (ее код) то уже загрузилась однократно и лишь делает горячую переинициализацию (Deinit/Init без выгрузки кода). В этом случае сам разработчик должен заботиться об правильной инициализации окружения.
Да, так и должно работать.
Программа (ее код) то уже загрузилась однократно и лишь делает горячую переинициализацию (Deinit/Init без выгрузки кода). В этом случае сам разработчик должен заботиться об правильной инициализации окружения.
Во-первых, Ваш комментарий явно противоречит определению в документации: инициализируются однократно перед вызовом OnInit(). Тогда следует явно уточнить в документации определение: "...инициализируются однократно перед первым вызовом OnInit()".
Во-вторых, Ваш комментарий явно противоречит случаю со сменой счета, при котором МТ, очевидно, принудительно завершает работу эксперта и восстанавливает заново.
Можно ли вынести на рассмотрение/голосование принципиальный вопрос о необходимости принудительной переинициализации статических переменных при каждом (не только при первом) вызове OnInit()?
Вобще, забавно выходит.
По наитию, считал, что функция OnDenit - является своего рода деструктором, а OnInit - конструктором эксперта.
По факту же выходит, что OnInit - событие многократное (в пределах жизни эксперта). Непонятно тогда, зачем явно генерировать событие OnDenit, если известно, что советник не завершает свою работу (например, в случае с изменением периода графика)?
И еще вопрос.
Причина деинициализации REASON_CHARTCHANGE - Символ или период графика был изменен.
Объясните, пожалуйста, каким образом можно изменить символ графика, не удалив эксперта на нем?
И еще вопрос.
Причина деинициализации REASON_CHARTCHANGE - Символ или период графика был изменен.
Объясните, пожалуйста, каким образом можно изменить символ графика, не удалив эксперта на нем?
Вобще, забавно выходит.
По наитию, считал, что функция OnDenit - является своего рода деструктором, а OnInit - конструктором эксперта.
По факту же выходит, что OnInit - событие многократное (в пределах жизни эксперта). Непонятно тогда, зачем явно генерировать событие OnDenit, если известно, что советник не завершает свою работу (например, в случае с изменением периода графика)?
И еще вопрос.
Причина деинициализации REASON_CHARTCHANGE - Символ или период графика был изменен.
.Объясните, пожалуйста, каким образом можно изменить символ графика, не удалив эксперта на нем?
1. Точно также все вызывалось в МТ4. А завершается либо нет работа эксперта этоо науки не известно (для этого в OnDeinit параметры и падаются, зотя причину возможного срабатывания OnInit тоже легко можно узнать).
2. Все очень просто, в параметрах терминала разрешите торговать эксперту при смене символа и периода.
После чего выберите в обзоре рынка другой символ и "бросьте" его на график мышкой.
Эксперт в любом случае при нормальной инициализации после смены символа/периода "не удалится" (происходит как ниже выразился Ренат "Горячий рестарт"). Если рассматривать это на простом уровне то эксперту при определенных настройках терминала разрешат торговать.
ChartSetSymbolPeriod()
Во-первых, Ваш комментарий явно противоречит определению в документации: инициализируются однократно перед вызовом OnInit(). Тогда следует явно уточнить в документации определение: "...инициализируются однократно перед первым вызовом OnInit()".
Во-вторых, Ваш комментарий явно противоречит случаю со сменой счета, при котором МТ, очевидно, принудительно завершает работу эксперта и восстанавливает заново.
Можно ли вынести на рассмотрение/голосование принципиальный вопрос о необходимости принудительной переинициализации статических переменных при каждом (не только при первом) вызове OnInit()?