Вы не можете знать, когда закрывается свеча. Только когда приходит новый тик, который начинает новый бар, старый бар закрывается, и этот тик может прийти почти в конце продолжительности бара.
Я не согласен с созданием функции new bar, потому что она может быть вызвана только один раз за тик (второй вызов возвращает false). Переменная может быть проверена несколько раз.
У меня получилось сделать общую функцию IsNewBar(symbol, timeframe), которая работает корректно внутри одного советника для разных комбинаций symbol и timeframe, и может вызываться неоднократно в пределах обработки одного тика, возвращая во второй раз (и последующие разы) то же, что и в первый раз.
Код Уильяма, который вы написали здесь, и мой код выполняются одинаково, но мой код продолжает выполняться до тех пор, пока время свечи не изменится, что очень уникально.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
1. Неправильно инициализированное previous_time, вызывающее ложные срабатывания сразу после запуска кода.
2. дорогостоящий доступ к iTime при каждом тике.
3. не все тики образуют бар (в редких случаях тик может произойти в нерабочий день и быть не транзакцией, а просто внутренней процедурой сервера).
Вы не можете знать, когда закрывается свеча. Только когда приходит новый тик, который начинает новый бар, старый бар закрывается, и этот тик может прийти почти в конце продолжительности бара.
Для теста нового бара Bars ненадежен (обновление/подключение может изменить количество баров на графике), объем ненадежен (пропуск тиков), цена ненадежна (дублирование цен и операнд The ==. - Форум по программированию на MQL4.) Всегда используйте время.
MT4: Новая свеча - Форум по программированию на MQL4 #3 (2014)
MT5: Доступ к переменным - Форум по программированию на MQL4 #3 (2022)
Я не согласен с созданием функции new bar, потому что она может быть вызвана только один раз за тик (второй вызов возвращает false). Переменная может быть проверена несколько раз.
Запуск советника один раз в начале каждого бара - Форум по программированию на MQL4 (2011)
Я не согласен с созданием функции new bar, потому что она может быть вызвана только один раз за тик (второй вызов возвращает false). Переменная может быть проверена несколько раз.
У меня получилось сделать общую функцию IsNewBar(symbol, timeframe), которая работает корректно внутри одного советника для разных комбинаций symbol и timeframe, и может вызываться неоднократно в пределах обработки одного тика, возвращая во второй раз (и последующие разы) то же, что и в первый раз.