Vladislav Boyko #: либо предусмотреть в коде ситуацию, когда не удалось получить индекс бара (и корректно среагировать на нее)
Когда-то я делал робот, и делал в ините проверку таких функций на возврат корректных значений, и в случае не корректных включал таймер на 0.3 секунды, чего хватало.
Но тут индикатор, в котором таймер не работает, по этому пошел на форум.
Когда-то я делал робот, и делал в ините проверку таких функций на возврат корректных значений, и в случае не корректных включал таймер на 0.3 секунды, чего хватало.
Но тут индикатор, в котором таймер не работает, по этому пошел на форум.
Лучше в индикатореобходиться без iФункций.
Если без iФункций никак не обойтись.
В индикаторе есть return 0 и попытка получить iBarShift на следующем тике.
А если выходной, то ChartSetSymbolPeriod в помощь.
А, так вообще без проблем, вы ведь текущий таймфрейм запрашиваете. Просто найдите самостоятельно нужный бар в массиве time[] - это сильно проще, чем пытаться обрабатывать ошибки iXXX.
Как уже было сказано выше, использовать iXXX в индиткаторе (не мультитаймфрейм) - очень плохая идея.
А, так вообще без проблем, вы ведь текущий таймфрейм запрашиваете. Просто найдите самостоятельно нужный бар в массиве time[] - это сильно проще, чем пытаться обрабатывать ошибки iXXX.
Как уже было сказано выше, использовать iXXX в индиткаторе (не мультитаймфрейм) - очень плохая идея.
Нужна возможность использовать разные тф, по этому так.
но они все проходили, а потом поиск индекса какого-то нужного бара выдавал -1.
В общем, тк индикатор в основном используется на открытом тф, пока сделал костыль если тф графика - то ищет по time[], если нет, то по iBarShift, и если -1 то выдает сообщение об ошибке данных.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
А никого не смущает эта строка?
Это уже после ищет в массиве по индексу -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 то выдает сообщение об ошибке данных.