Как нужно, так и пишут, а нужно от OrdersTotal()-1 до 0 включительно. Потому-что отсчет с нуля, а количество OrdersTotal().
Удаление ордера. Есть такой уровень заморозки - MODE_FREEZELEVEL.
Если нужно проще - можно писать так for(int i=OrdersTotal(); i-->0;) Проверил в скрипте:
#property strict void OnStart() { int Total=5; for(int i=Total; i-->0;) Alert(i); }
i-- > 0; означает, что сначала производится сравнение, потом i уменьшается на 1 и потом выполняется тело цикла
А индексация с нуля в С++ и основанных на нем языках потому, что указываем смещение от начала. Первый элемент находится со смещением = 0 от начала. Чтобы добраться до последнего элемента нужно сместиться или пропустить (количество - 1) элементов
думают что функция работает с массивом, а у массива первый индекс 0, обычно так создают сдвиг, то есть делают контрольный выстрел, чтоб отсчет начинался точно с нуля, а не единицы. -1 ставят в основном на тайм сериях и при пересчете баров при создании индикаторов, там иногда нужно потому что нулевой бар может оказаться первым и параметры не сойдутся
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет! Скажите почему пишут for(int i=OrdersTotal()-1; i>=0; i--)? Разве так не проще: for(int i=OrdersTotal(); i>0; i--)? Зачем там -1? Или есть какая-то разница?
Да, и еще вопрос: может для OrderDelete() быть ошибка 145 (Модификация запрещена, так как ордер слишком близок к рынку)? У меня случилась такая фигня, и я чесно говоря подофигел, здесь же нет никакой модификации, просто удаление отложки...