Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1687

 
Да причем тут ваши индексы и возвращаемая сумма ордеров. Создайте пару ордеров и в цикле пройдитесь по ним. Проход будет не по массиву, а числу которое вернёт OrdersTotal как обычная функция, она же не возвращает адрес на индекс массива где хранятся ордера.
 

Размер массива-это количество элементов массива (или ордеров например)

первый элемент имеет индекс 0, всегда,

последний - на единицу меньше, чем размер массива.


Если Вы хотите создать массив с одним элементом, то обратится к этому элементу Вы можете только так arr[0]. Во всех других случаях, Вы получите ошибку выхода за пределы массива.

С ордерами также, просто ошибки нет, но до первого элемента (ордера) по другому Вы не достучитесь.

 
Вот справка https://www.mql5.com/ru/docs/array
Документация по MQL5: Операции с массивами
Документация по MQL5: Операции с массивами
  • www.mql5.com
Операции с массивами - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Я понял, OrdersTotal дает только сумму, а чтобы обратиться к ордеру мы используем OrderSelect и вот оно уже перебирает массив. Я упустил этот момент из виду.
 
Да, правильно. OrderSelect(0,


 
Nerd Trader #:
Да причем тут ваши индексы и возвращаемая сумма ордеров. Создайте пару ордеров и в цикле пройдитесь по ним. Проход будет не по массиву, а числу которое вернёт OrdersTotal как обычная функция, она же не возвращает адрес на индекс массива где хранятся ордера.

Вы не по числу делаете проход, а по списку ордеров вашего торгового счета! А число ордеров это просто число.. по нему нельзя проходы делать.. как вы сделаете проход по числу 100? Никак.. А по списку где 100 строк, можно сделать проход каждой строки. 

Число, которое возвращает функция OrdersTotal() - это простое число.. НО задумано так, что оно ВСЕГДА совпадает с числом ордеров в списке.

Если вы знаете что у вас всего 1 ордер всегда, то тогда вам достаточно работать с ордером под номером "0" безо всяких  OrdersTotal()...

 
Nikolay Ivanov #:

Вы не по числу делаете проход, а по списку ордеров вашего торгового счета! А число ордеров это просто число.. по нему нельзя проходы делать.. как вы сделаете проход по числу 100? Никак.. А по списку где 100 строк, можно сделать проход каждой строки. 

Число, которое возвращает функция OrdersTotal() - это простое число.. НО задумано так, что оно ВСЕГДА совпадает с числом ордеров в списке.

Если вы знаете что у вас всего 1 ордер всегда, то тогда вам достаточно работать с ордером под номером "0" безо всяких  OrdersTotal()...

Aleksei Stepanenko #:

Размер массива-это количество элементов массива (или ордеров например)

первый элемент имеет индекс 0, всегда,

последний - на единицу меньше, чем размер массива.


Если Вы хотите создать массив с одним элементом, то обратится к этому элементу Вы можете только так arr[0]. Во всех других случаях, Вы получите ошибку выхода за пределы массива.

С ордерами также, просто ошибки нет, но до первого элемента (ордера) по другому Вы не достучитесь.

Да, так и есть.
 
Nerd Trader #:
Я понял, OrdersTotal дает только сумму, а чтобы обратиться к ордеру мы используем OrderSelect и вот оно уже перебирает массив. Я упустил этот момент из виду.

Массив(список) перебирает ЦИКЛ. А  OrderSelect только выделяет для дальнейшей работы тот ордер, порядковый номер которого был создан в этом цикле. 

Документация по MQL5: Торговые функции / OrderSelect
Документация по MQL5: Торговые функции / OrderSelect
  • www.mql5.com
OrderSelect - Торговые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Nerd Trader #:
Да причем тут ваши индексы и возвращаемая сумма ордеров. Создайте пару ордеров и в цикле пройдитесь по ним. Проход будет не по массиву, а числу которое вернёт OrdersTotal как обычная функция, она же не возвращает адрес на индекс массива где хранятся ордера.
Штука в том, что фор удобен тем, что давая ему количество позиций, он может заполнить какой либо массив. У меня всё сломается, если 0 скормить, потому что на кол-во позиций ArrayResize завязана. По этому у меня есть дополнительное условие if колво позиций больше 0, то вот этот цикл. Я тоже постоянно путаюсь с этим, сейчас вот опять всё перепроверил. Советуют правильно, потому что иначе фор не заполнит нулевой элемент массива, для которого и нужен фор.
 
Отлично, друзья, что у нас консенсус