Timer()

 

В индикаторе используется функция Timer(). Начальная инициализация прописана правильно, но таймер не активизируется при перезагрузке терминала. Активировать его удается только если изменить input  параметры индикатора. Ну и естественно при перекомпиляции индикатора таймер тоже активируется.

 
Rinng писал(а) # :

В индикаторе используется функция Timer(). Начальная инициализация прописана правильно, но таймер не активизируется при перезагрузке терминала. Активировать его удается только если изменить input  параметры индикатора. Ну и естественно при перекомпиляции индикатора таймер тоже активируется.

несколько похожие проблемы наблюдаются и при других ситуациях. (в МТ4)

Например в индикаторе прописано в инициализации - переопределение толщины линии. При переинициализации (или перекомпилировании) все проходит нормально, но при перезагрузке терминала - толщина не изменяется.

По-моему это одинаковые проблемы, которые идут ещё с МТ4.

 

Получается что при запуске терминала я должен вручную выискивать все свои индикаторы с OnTimer() и активировать их. Очень не удобно ,  тем более если индикаторов десяков несколько. А если они еще обрабатывают важную рыночную информацию....  сколько можно ценного потерять если забыть активировать их.

 
Приведите рабочий пример кода, пожалуйста.

 
Renat писал(а) # :
Приведите рабочий пример кода, пожалуйста.

Вот индикатор CCI из стандартной поставки, в который встроен таймер. Работает после перезагрузки правильно.
Файлы:
cci.mq5  4 kb
 
Renat писал(а) # :
Приведите рабочий пример кода, пожалуйста.

Код у меня достаточно большой со множеством пользовательских функций.

Для поиска ошибки я создал точную копию файлов данного индикатора, но с другим названием.

Запустил на новом окне графика цен....

В итоге оказалось что индикатор рабочий полностью, а глюк был в окне старого графика цен с индикатором.

Старое окно графика цен не инициализировалось при перезапуске терминала. 

 

Всё таки видимо нужно обратить внимание на функцию onTimer(). Её работа не достаточно устойчива по сравнению с onTick(). Я понимаю что пойск ошибки в данном случаи сравни с поиском плавающего контакта в большом аппарате. Но у onTimer() большие перспективные возможности и поэтому хотелось бы, чтобы она работала гораздо устойчивее. Обнаружил что выход за размер массива на одном индикаторе крашит таймер на другом. Но проблема в том,что это происходит не всегда. Поэтому конкретные факты привести не могу. Видимо эту информацию нужно воспринимать как сигнал о возможной проблеме.

Причина обращения: