Ошибки, баги, вопросы - страница 3150
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
все же тернарный оператор смотрится более лаконично (ИМХО)
еще более лаконичный способ :
:))
я уже писал, что при такой конструкции вы обращаетесь к индексу буфера с номером rates_total (когда prev_calculated == 0 ).
А это переполнение, так как rates_total - это размер буфера, последний элемент которого rates_total -1
Да я понимаю почему переполнение происходит сейчас!
Почему раньше работала эта конструкция, а теперь не работает?
Потому что буфер аллоцируется ровно на rates_total
Жду что Артём скажет, он понимает суть вопроса.а не rates_total +1
Да я понимаю почему переполнение происходит сейчас!
Почему раньше работала эта конструкция, а теперь не работает?
Потому что буфер аллоцируется ровно на rates_total
а не rates_total +1
чудес не бывает.
Раньше если работало, то значит это был другой код
При такой конструкции
индикаторный буфер выходит за пределы.
Покажи пожалуйста пример для тиков с циклом i>=0
может я что подзабыл, и не так делаю.
грубо уменьшаю на 2 или 3 индекс на максимальном краю для верности.)
чудес не бывает.
Раньше если работало, то значит это был другой код
Раньше правильный расчёт limit был
и заходил в цикл i>=0
А теперь не заходит, потому что limit получается -1
Раньше правильный расчёт limit был
и заходил в цикл i>=0
А теперь не заходит, потому что limit получается -1
раньше тоже не мог заходить с этим же кодом
не сочиняйте
у Хатимлянского скачайте старый билд и проверьте, если не верите.
Это обсуждение здесь оффтоп, ему место в какой-нибудь новичковой ветке
Если не пользовался этой конструкцией раньше, то воздержись со своим офтопом.
раньше тоже не мог заходить с этим же кодом
не сочиняйте
у Хатимлянского скачайте старый билд и проверьте, если не верите.
Артём тоже пользовался этой конструкцией.
Что и описал он выше, поэтому только он тут понимает проблему.
Раньше правильный расчёт limit был
и заходил в цикл i>=0
А теперь не заходит, потому что limit получается -1
Всегда была проверка: if(limit>1) limit=rates_total-1. Это для случаев, если нет в расчётах i+сколько_то. Если есть, то эти "сколько-то" нужно включать в конструкцию: limit=rates_total-1-сколько_то.
Без неё всегда был выход за пределы массива. Ведь rates_total - это ни что иное как Bars(). Соответственно, если баров 5000, и мы обращаемся к индексу 5000, то выходим за пределы массива (подсчёт-то баров с нуля начинается).
В вашем примере не правильный расчёт limit:
Должен быть таким:
int limit = rates_total-prev_calculated;
А после него проверка на limit>1
и если limit таки больше единицы, то limit = rates_total-1