Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2667
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А никого не смущает эта строка?
Это уже после ищет в массиве по индексу -1.
либо найти индекс бара самостоятельно в предварительно скопированном массиве котировок
Такая ситуация возникает при первом включении на недавно открытом графике, после не возникают.
Может быть там котировки еще не прогрузились?
либо предусмотреть в коде ситуацию, когда не удалось получить индекс бара (и корректно среагировать на нее)
Когда-то я делал робот, и делал в ините проверку таких функций на возврат корректных значений, и в случае не корректных включал таймер на 0.3 секунды, чего хватало.
Но тут индикатор, в котором таймер не работает, по этому пошел на форум.
Когда-то я делал робот, и делал в ините проверку таких функций на возврат корректных значений, и в случае не корректных включал таймер на 0.3 секунды, чего хватало.
Но тут индикатор, в котором таймер не работает, по этому пошел на форум.
Лучше в индикаторе обходиться без iФункций.
Если без iФункций никак не обойтись.
В индикаторе есть return 0 и попытка получить iBarShift на следующем тике.
А если выходной, то ChartSetSymbolPeriod в помощь.
Типа так.
ЗЫ. Логичнее сделать так.
Написать запрос любой iBarShift и не переходить к основному расчёту индикатора, пока не получим , что то не равное -1.
Такая ситуация возникает при первом включении на недавно открытом графике, после не возникают.
Может быть там котировки еще не прогрузились?
Пробовали true?
Но тут индикатор,
А, так вообще без проблем, вы ведь текущий таймфрейм запрашиваете. Просто найдите самостоятельно нужный бар в массиве time[] - это сильно проще, чем пытаться обрабатывать ошибки iXXX.
Как уже было сказано выше, использовать iXXX в индиткаторе (не мультитаймфрейм) - очень плохая идея.
Пробовали true?
А, так вообще без проблем, вы ведь текущий таймфрейм запрашиваете. Просто найдите самостоятельно нужный бар в массиве time[] - это сильно проще, чем пытаться обрабатывать ошибки iXXX.
Как уже было сказано выше, использовать iXXX в индиткаторе (не мультитаймфрейм) - очень плохая идея.
if(iBarShift(_Symbol, PERIOD_CURRENT, time[rates_total - 10]) < 0) return 0;
С этим вообще дичь какая-то. В начале OnCalculate сделал проверку разных свечей, с начала, с конца, с середины
но они все проходили, а потом поиск индекса какого-то нужного бара выдавал -1.
В общем, тк индикатор в основном используется на открытом тф, пока сделал костыль если тф графика - то ищет по time[], если нет, то по iBarShift, и если -1 то выдает сообщение об ошибке данных.