Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Еще раз. Об этом нигде не сказано. Это во-первых. Во-вторых, зачем она вводит тогда в заблуждение сначала показывая код ошибки 4066, а потом - нет?
Данные подкачиваются порциями, а потом ещё и обрабатываются терминалом, а так как вы работаете по таймеру вы и попадаете в паузу. Да об этом явно ни где не говориться но многие программисты пишущие МТФ приложения обычно об этом знают я об этом сразу и сказал.
https://docs.mql4.com/ru/series/timeseries_access внимательно прочитайте.
Ну и выше дали уже вариант проверки доступности истории. Он не идеален но прост и нагляден.
Если этот вариант не работает то проверьте следующим образом.
Данные подкачиваются порциями, а потом ещё и обрабатываются терминалом, а так как вы работаете по таймеру вы и попадаете в паузу. Да об этом явно ни где не говориться но многие программисты пишущие МТФ приложения обычно об этом знают я об этом сразу и сказал.
https://docs.mql4.com/ru/series/timeseries_access внимательно прочитайте.
Ну и выше дали уже вариант проверки доступности истории. Он не идеален но прост и нагляден.
Про попадание "в паузу" где пруфы?
Внимательно прочитал (и раньше читал). Я в курсе, что данные (тем более старших ТФ) не всегда доступны сразу. Не вопрос. Но почему тогда функция SeriesInfoInteger() возвращает отсутствие ошибки!? Вот в чем вопрос!
Если предположить, что запрос приходится на какую-то паузу/подкачку/обновление/перерыв и т.д. дак пусть вернет код ошибки != 0. И проблем не будет!
Ну и выше дали уже вариант проверки доступности истории. Он не идеален но прост и нагляден.
Ответил уже выше @Ihor Herasko по этому моменту.
Ответил уже выше @Ihor Herasko по этому моменту.
Выше дал свой вариант проверки. Почему так вопрос к разработчикам но этот момент известен очень давно!
Я обызательно попробую Ваш вариант проверки и отпишусь о результатах.
Я обызательно попробую Ваш вариант проверки и отпишусь о результатах.
Сначала ответ @Ihor Herasko. Код для воспроизведения:
Результат:
По записям лога. Терминал был выключен в 14:25. Далее, включен в 14:30. Проверяем время бара М15. Запуск с ТФ М1. Индикатор (код выше) показал актуальное время открытия 12:15 (терминальное время, отстает от моего локального на 2 часа). Должен был получен результат 12:30! Вывод - ошибка присутствует. И данный метод, предложенный @Ihor Herasko не работает.
Обязательно отпишитесь! У меня это работает! Но могут быть и всякие подводные камни если не получиться подумем что можно ещё сделать.
Отписываюсь. Код:
Результат:
Выключил терминал в 14:48, включил в 15:01. Должен был получить время 13:00. Получил - 12.45. Еще вопросы?
Меняю ТФ с М1 на М5, получаю корректный результат:
А вроде я понял! Индюк запускается сразу вместе с терминалом? Если да то перед проверкой дождитесь что есть связь с сервером IsConnected() у вас очень быстрый таймер он не успевает синхронизироваться!
Или сделай вот так
Но придётся учитывать разницу между Серверным временем и локальным. Отпишись по результатам!