- Серьезный вопрос к знатокам. Терминал мт4. Советник тестирую на тестере. Но есть дикая ошибка.
- [СЕРВИСДЕСК] Ошибка получения времени старшего ТФ в таймере!
- Влияние котировок на логику работы советника
https://www.mql5.com/ru/docs/constants/tradingconstants/enum_series_info_integer
простых решений нет. Лично я использую таймер для получения всех котировок.
Не уверен, что будет правильно использовать это решение, но изучить его стоит.
- www.mql5.com
Это естественно изучил, но как раз оно то и не подходит, так как не работает (заведомо) для текущего инструмента в том же потоке.
Жду комментариев предложений.
Для более предметного обсуждения набросал пример с функцией проверки / загрузки истории.
Жду комментариев предложений.
Что-то кода много у тебя ))
Попробуй так.
Запрашивая время текущего бара iTime(symb, tf, 0);
В данном случае, терминал сам автоматически инициирует подгрузку истории.
Возможно iTime() будет не корректно использовать, если в терминале уже есть часть истории, не проверял досконально, просто привёл пример.
Если iTime() будет некорректен в использовании, то переделать запрос по TimeCurrent(), но по тому-же смыслу проверки на ошибку.
void LoadHist(string symb, ENUM_TIMEFRAMES tf) { ResetLastError(); iTime(symb, tf, 0); int err = GetLastError(); while(err != ERR_SUCCESS) { Print("Error: Data for symbol = ", symb, " period = ", EnumToString(tf), " not loaded. Loading data..."); Sleep(5000); ResetLastError(); iTime(symb, tf, 0); err = GetLastError(); } }
Да, эта функция не годится когда в истории терминала есть какая-то часть истории.
Функция возвращает последнее известное значение в истории.
И GetLastError возвращает 0, т.е. ошибки нет, что не подходит для условия в цикле while.
Тогда переделывать вызов времени бара по TimeCurrent.
Итак привожу код который загружает историю в индикаторе.
Особенности: по факту в независимости от исходного ограничения по требуемому количеству баров, загружает все. Т.к. на данном этапе не понятно как определить этот лимит по дате или количеству реально существующих баров на сервере. Возможно от ограничения вообще лучше отказаться, чтобы не получить ошибку или подтормаживание на этапе дозагрузки остатка истории в будущем.
Посмотрите главу в книге, в частности место с описанием QuoteRefresh.mqh
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования