Добрый день!
Обнаружил такую проблему.
1. Имеется советник с внешним параметром и какая-либо статическая переменная в теле какой-либо подпрограммы.
2. Статическая переменная в подпрограмме изменяется.
3. После этого изменяется параметр советника.
4. После этого советник перегружается с новым параметром, а статическая переменная заново не инициализируется, оставаясь равной последнему присвоенному ей значению, перед изменением параметра советника, что вообще говоря очень странно (по логике вещей), т.к. советник запускается заново.
Кто сталкивался - есть ли способы лечения?
PS. Это баг или фича? :-)
Любой баг, это - фича :)
Я из-за этого стал внутренние статические переменные делать глобальными(не все, конечно) . И функция ReInit() у меня теперь присутствует,- часть init, которая исполняется при необходимости "рестарта" start(каламбур)
Причина: в MQL4 статические переменные автоматически не инициализируются, хотя из документации это не следует.
Лекарство: Ручная инициализация, в том числе - ВСЕХ массивов(они статичны).
Причина: в MQL4 статические переменные автоматически не инициализируются, хотя из документации это не следует.
Лекарство: Ручная инициализация, в том числе - ВСЕХ массивов(они статичны).
Стал пробовать по Вашей наводке и обнаружил, что глобальные параметры тоже не переиницализирцются при смене внешнего параметра :-(
Глобальные параметры можно переинициализировать только в init(). Таким образом, получается, что локальные статические переменные вообще идут лесом, т.к. при наличии внешних параметров, предполагающих переинициализацию всего советника, они становятся неактульны.
Известно ли, что по этому поводу говорят разработчики - это как-то будет исправляться или так фичей и останется?
В общем, как я понял, единственный надежный способ переинициалицации локальных статических переменных советника это удаление его с графика, а если при этом необходимо изменить и внешние параметры, то перекомпиляция советника с новыми значениями глобальных параметров.
Как-то ну очень грустно :-(. Не эстетично это как-то вместо локальных статических использовать глобальные. Может я все-таки чего-то не догоняю?
Ничего не понимаю (с) "Следствие ведут Колобки"
что даже если что-то починят- оно может потом опять сломаться в будущем.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
Обнаружил такую проблему.
1. Имеется советник с внешним параметром и какая-либо статическая переменная в теле какой-либо подпрограммы.
2. Статическая переменная в подпрограмме изменяется.
3. После этого изменяется параметр советника.
4. После этого советник перегружается с новым параметром, а статическая переменная заново не инициализируется, оставаясь равной последнему присвоенному ей значению, перед изменением параметра советника, что вообще говоря очень странно (по логике вещей), т.к. советник запускается заново.
Кто сталкивался - есть ли способы лечения?
PS. Это баг или фича? :-)