Piotr Storozenko:
Какие могут быть еще решения проблемы?
Спаибо.
Нужно делать так:
bool IsTFDataReady(ENUM_TIMEFRAMES eTF) { iTime(NULL, eTF, 1); return GetLastError() == ERR_NO_ERROR; } int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { if (!IsTFDataReady(<нужный ТФ>)) return 0; .... }
Тогда индикатор начнет свое выполнение сразу после того, как появятся все необходимые данные запрашиваемого ТФ. В теле индикатора потом не нужно дополнительно проверять на возникновение этой ошибки.
Ihor Herasko:
Нужно делать так:
Тогда индикатор начнет свое выполнение сразу после того, как появятся все необходимые данные запрашиваемого ТФ. В теле индикатора потом не нужно дополнительно проверять на возникновение этой ошибки.
Спаибо!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день.
Столкнулся со следующей проблемой:
В индикаторе нужно взять для дальнейших рассчетов High/Low указанного инструмент с указанного TF.
Во вложении пример индикатора.
Если инструмент не имеет свежих исторических данных то при первом вызове функции iHighest(symbol,PERIOD_D1,MODE_HIGH,Number_ofdays_PHL,1) выдает ошибку
4066
ERR_HISTORY_WILL_UPDATED
Запрошенные исторические данные в состоянии обновления
потом уже только 0
Как можна задержать выполнение индикатора, до окончания обновления данных. Цикл, который пробую использовать не работает , функция Sleep тоже не работает в индикаторах.
Начинает работать только когда добавить дополнительную временную переменную, как в индикаторе 01
Какие могут быть еще решения проблемы?
Спаибо.