Панель управления зигзагом MQL5

 

Пишу панель управления для своего индюка на зигзаге.

Мне нужно получать первые 5 вершин зигзага и время этих вершин для выбранного таймфрейма с панели. Именно первые, то есть которые были в самом начале истории доступной(ограниченной числом баров в настройках)

Значения эти я получаю, почему то только нажимая 2 раза на кнопки, то есть я нажимаю на необходимый ТФ и мне показывает белеберду, а при втором нажатии все правильно.

Поможет кто найти ошибку, показать что не так с этим?

Код сюда походу не влезает

Файлы:
zzpanel.mq5  47 kb
 
Roman Sharanov:

Поможет кто найти ошибку, показать что не так с этим?


При переключении ТФ данные появляются далеко не сразу. Поэтому при первом обращении с вероятностью 99% получите недостоверные данные. Чтобы быть уверенным, что данные получены, нужно проверять, что возвращают функции типа CopyXXX (CopyBuffer, CopyTime и т. д.). В приведенном коде нет таких проверок. Почитайте внимательно справку по этим функциям. Там много нюансов.

 
Ihor Herasko:

При переключении ТФ данные появляются далеко не сразу. Поэтому при первом обращении с вероятностью 99% получите недостоверные данные. Чтобы быть уверенным, что данные получены, нужно проверять, что возвращают функции типа CopyXXX (CopyBuffer, CopyTime и т. д.). В приведенном коде нет таких проверок. Почитайте внимательно справку по этим функциям. Там много нюансов.

Понял. Ну например, я проверил и увидил что данные неверные, что мне делать? еще раз делать CopyXXX?

 
Roman Sharanov:

Понял. Ну например, я проверил и увидил что данные неверные, что мне делать? еще раз делать CopyXXX?

Это зависит от целей. При получении той или иной ошибки программисту всегда приходится самому решать, что делать. Это самая большая головная боль при программировании. Ошибки могут возникать практически после каждой команды. И то, насколько правильно принято решение, указывает на уровень опыта.

Если ошибка критическая (без нее невозможно дальнейшее выполнение), то ответ очевиден - прерывать обработку события и ждать следующего события, при котором ошибка исчезнет.