Поиск всех ордеров открытых в терминале

 

Привет форумчане! Написал такой код для поиска всех ордеров открытых в терминале:

int CountOtherOrders(int cmd)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         if(OrderSymbol()!=Symbol() && OrderType()==cmd )
            count++;
        }
     }
   return(count);
  }

Вернее не всех вообще а всех кроме текущей пары. Моя задача сделать ограничение: если в терминале открыто N ордеров (неважно каких, кто и как открыл тоже не важно) то советник не торгует, если меньше N тогда входим по сигналу...

Видать я где-то накосячил, неработает... Подскажите где искать проблему...

 
Maksim Neimerik:

Привет форумчане! Написал такой код для поиска всех ордеров открытых в терминале:

Вернее не всех вообще а всех кроме текущей пары. Моя задача сделать ограничение: если в терминале открыто N ордеров (неважно каких, кто и как открыл тоже не важно) то советник не торгует, если меньше N тогда входим по сигналу...

Видать я где-то накосячил, неработает... Подскажите где искать проблему...

Если во всём терминале, то это лишнее OrderSymbol()!=Symbol()

int CountOtherOrders(int cmd)
  {
   int count=-1;
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderType()==cmd )
            count++;
        }
     }
   return(count);
  }
 
Vitaly Muzichenko:

Если во всём терминале, то это лишнее OrderSymbol()!=Symbol()

Нет, я дальше уточнил  "кроме текущей пары"... Ну хз, вроде должно работать...
 
Maksim Neimerik:
Нет, я дальше уточнил  "кроме текущей пары"... Ну хз, вроде должно работать...
int CountOtherOrders(int cmd)
  {
   int count=0;
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol()) continue;
         if(OrderType()==cmd ) count++;
        }
     }
   return(count);
  }
 
Vitaly Muzichenko:

Спасибо, буду пробовать...

но разве

if(OrderSymbol()==Symbol()) continue;

не то же самое что и

 if(OrderSymbol()!=Symbol())
            count++;
?
 
Maksim Neimerik:

Спасибо, буду пробовать...

но разве

не то же самое что и

?

Тоже самое, но добавил "MODE_TRADES"

 
Vitaly Muzichenko:

Тоже самое, но добавил "MODE_TRADES"

А, понял! Спасибо...