нужна помощь! - страница 3

 
Vladimir Mametov:  надо 
for(int i = OrdersHistoryTotal()-1; i >= 0; i--)

Это слишком длинный вариант записи цикла. Можно на 4 значащих символа короче. Третья часть между точкой с запятой и закрывающей скобкой вообще лишняя!!!

 
STARIJ:

Это слишком длинный вариант записи цикла. Можно на 4 значащих символа короче. Третья часть между точкой с запятой и закрывающей скобкой вообще лишняя!!!

не лишняя,если нужно отфильтровать символы и магики...

 
Nikolay Gaylis:  не лишняя,если нужно отфильтровать символы и магики...

цикл можно писать так: for(int i=OrdersTotal(); i-->0;)  прилагаю скрипт для проверки правильности утверждения

//+------------------------------------------------------------------+ 
//| Сравнение написаний цикла FOR                          Proba.mq4 |
//+------------------------------------------------------------------+ 
#property strict

void start()
{
   int orders=4;
   Alert("----------");

   for(int i=orders-1; i>=0; i--)Alert(i);
   Alert("Обычный вариант");

   for(int i=orders; i-->0;)     Alert(i);
   Alert("Краткий вариант");
}

      Как видите, результат одинаковы!!! Все ордера переберутся... Фильтруйте символы и магики

Файлы:
for.mq4  1 kb
 
STARIJ:

цикл можно писать так: for(int i=OrdersTotal(); i-->0;) 

Это точно не правильно, нет такого ордера под номером i=OrdersTotal()

Суть важна

 
Vladimir Mametov:

Это точно не правильно, нет такого ордера под номером i=OrdersTotal()

Суть важна

Посмотрите, какие значения индекса в распечатке выводятся!!! В операторе for перед выполнением тела цикла производится проверка. И во время этой проверки в предлагаемой форме производится уменьшение индекса. Изменение индекса и проверка просто совмещены, объединены... Таким образом, первый обработанный ордер будет с номером i=OrdersTotal()-1. Как говорил Козьма Прутков: Зри в корень