Самообучение языку MQL5 с полного нуля - страница 64

 
MrBrooklin:

А функцию Alert() обязательно применять или она для большей информативности нужна?

Не обязательно, это для удобства

 
VVT:

Не обязательно, это для удобства

Понятно.

С уважением, Владимир.

 
MrBrooklin:

Здравствуйте, Валерий! Спасибо Вам за совет. С оператором if-else уже немного подружился, теперь и оператор-переключатель switch тоже нужно освоить. А функцию Alert() обязательно применять или она для большей информативности нужна?

С уважением, Владимир.

С учетом опыта электронщика. При пожаре сирена, при не вымытых полах, замечание убирающему. Коммент пишет на чарте, принт в журнал, врайт в файл, алерт пищит, и месседж бокс еще есть, тоже пищит, но это не родное.

 
Valeriy Yastremskiy:

С учетом опыта электронщика. При пожаре сирена, при не вымытых полах, замечание убирающему. Коммент пишет на чарте, принт в журнал, врайт в файл, алерт пищит, и месседж бокс еще есть, тоже пищит, но это не родное.

Спасибо, очень доходчиво объяснили!

С уважением, Владимир.

 
Valeriy Yastremskiy:

если позиций с нашим магик и на нашем символе равно нулю то проверяем время и открываем позицию, если равно 1 то не открываем позицию, проверяем время закрытия и тралим, если более 1 то Алерт и не работаем. Можно в свич, можно в иф проверки делать.

Здравствуйте, Валерий! Большое спасибо, т.к. Ваш вариант "...если позиций с нашим магик и на нашем символе равно нулю то проверяем время и открываем позицию..." оказался самым простым и эффективным. Дописал в условии проверки времени && PositionTotal()==0 и стала открываться только одна позиция с нужным объёмом!

   if(time_current.hour==time_open.hour && time_current.min==time_open.min && PositionsTotal()==0)
      OpenBUY();

С уважением, Владимир.


 
Вот интересная статья
https://www.mql5.com/ru/articles/35

Эксп и индикатор.
 
Aleksey Masterov:
Вот интересная статья
https://www.mql5.com/ru/articles/35

Эксп и индикатор.

Здравствуйте, Алексей! Спасибо за ссылку на статью. Да, в ней много чего интересного.

С уважением, Владимир.

 
MrBrooklin:
if(time_current.hour==time_open.hour && time_current.min==time_open.min


это не самый лучший способ сравнивать время для ожидания открытия позиции

в тестере всегда все будет работать гладко, на реальном счету могут быть ошибки - советник по приходу тика работает, если по какой причине тик не придет именно в ту минуту когда Вы его ждете, Ваш алгоритм будет работать некорректно и очень тяжело потом найти эту логическую ошибку


попробуйте переформулировать эту задачу, так чтобы уйти от жесткого сравнения на равенство ( == ) к условию больше или равно ( >= ) ....( и/или  условие меньше равно)

 
Igor Makanu:

это не самый лучший способ сравнивать время для ожидания открытия позиции

в тестере всегда все будет работать гладко, на реальном счету могут быть ошибки - советник по приходу тика работает, если по какой причине тик не придет именно в ту минуту когда Вы его ждете, Ваш алгоритм будет работать некорректно и очень тяжело потом найти эту логическую ошибку

попробуйте переформулировать эту задачу, так чтобы уйти от жесткого сравнения на равенство ( == ) к условию больше или равно ( >= ) ....( и/или  условие меньше равно)

Здравствуйте, Игорь! Спасибо за совет. Полностью согласен с Вашими доводами, так как ситуации с тиками, действительно, могут быть разными. Поправку в коде сделаю.

С уважением, Владимир.

 

Поправку в коде, согласно рекомендации Игоря, сделал. Очень хорошая и своевременная подсказка! Устранил проблему в работе советника, которую раньше не замечал. Ещё раз спасибо, Игорь!

С уважением, Владимир.

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