Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1686
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
больше или равно, потому что первый элемент массива тоже нужно учесть, а его индекс в массиве равен нулю.
Не, всё нормально. Если позиций нет, то i=OrdersTotal()-1 будет равен -1. И условие цикла i>=0 сразу не выполнится. И программа не войдёт в цикл.
я не понимаю о каком массиве тут все ведут речь. Если OrdersTotal работает не так.
Ордера по сути находятся в массиве программы, просто мы его не видим. OrdersTotal равносилен ArraySize, и показывает общее количество элементов.
В массиве индекс первого элемента всегда начинается с нуля, а последнего соответственно размер минус единица.
Ордера по сути находятся в массиве программы, просто мы его не видим. OrdersTotal равносилен ArraySize, и показывает общее количество элементов.
В массиве индекс первого элемента всегда равен нулю, а последнего соответственно размер минус единица.
Какая разница где находятся ордера, если OrdersTotal не массив. Он возвращает число ордеров, а не индекст массива.
Но это не правильно, получается "сумма ордеров" - 1, то есть из цикла всегда будет исключаться 1 ордер.
ордера находятся в пронумерованном списке.. Отсчет списка идет от 0..
Например
порядковый номер 0, тип бай, лот 0.1
порядковый номер 1, тип селл, лот 1
порядковый номер 2, тип селл, лот 0.5
порядковый номер 3, тип бай, лот 0.16
Если сейчас вызвать OrdersTotal() она будет = 4
НО если нужно провести навигацию по всем строкам списка, то нужно пройтись по номерам 0 1 2 3, номера 4 тут нету.. хотя ордеров 4..
Поэтому делается хитрость, при составлении цикла перебора делается минус 1 на число ордеров, вот и все..
Какая разница где находятся ордера, если OrdersTotal не массив. Он возвращает число ордеров, а не индекст массива.
Какая разница где находятся ордера, если OrdersTotal не массив
Но это не правильно, получается "сумма ордеров" - 1, то есть из цикла всегда будет исключаться 1 ордер.
Если не нравится "-1", то можно так
Ордера по сути находятся в массиве программы, просто мы его не видим. OrdersTotal равносилен ArraySize, и показывает общее количество элементов.
В массиве индекс первого элемента всегда начинается с нуля, а последнего соответственно размер минус единица.
Ну так общее кол-во и индекс массива это разные вещи, почему вы думаете что это одно и тоже? Чтобы создать массив с 1 индексом, вводим 1, а не 0, (int ar[1]) и соответственно ArraySize( ar ) вернет также 1, а не 0.
Если не нравится "-1", то можно так
это некорректно.. ордер с номером 0 будет пропущен..
А корректно так -