Есть ли функция кторая выбирает позицию по Magic number?

 

Если ли функция MQL4 который позволит выбрать позицию по Magic number без перебора всех позиций в терминале сравнивая Magic ID в терминале с заданным?

Я импользую такой метод, но может быть кто то посоветует лучше вариант?

      ordCnt = OrdersTotal();
      posId = positions[p + id];   
      for(ord = 0; ord < ordCnt; ord++) {
        OrderSelect(ord, SELECT_BY_POS);
        if(posId != OrderMagicNumber()) continue;
        isPosClosed = true;
        RefreshRates();
        if(OrderType() == OP_BUY)
          isPosClosed = OrderClose(OrderTicket(), OrderLots(), Bid, 500, Green);
        else   
          isPosClosed = OrderClose(OrderTicket(), OrderLots(), Ask, 500, Red);
        if(isPosClosed == false)
          Print("OrderClose для ticket " + posTicket + " вернул ошибку: ", GetLastError());
        break;
      }
 

Для закрытия позиций нужно использовать обратный проход:

for (ord=ordCnt-1; ord>=0; ord--) {
  ...
}
Протрассируйте закрытие множества позиций с прямым проходом. Вряд ли Вам понравится многкратный вызов Вашей функции.
 

Я ничего лучше не знаю: Учёт ордеров в большой программе.

 
KimIV:

Для закрытия позиций нужно использовать обратный проход:

for (ord=ordCnt-1; ord>=0; ord--) {
  ...
}
Протрассируйте закрытие множества позиций с прямым проходом. Вряд ли Вам понравится многкратный вызов Вашей функции.

Спасибо за поправку, но происходит выход из цикла break как только нужная позиция найдена и закрыта функцией CloseOrder. 
 
SK. писал (а):

Я ничего лучше не знаю: Учёт ордеров в большой программе.


Спасибо за ссылку там целая статейка. Почитаю мож что-нибудь полезное найду.
Причина обращения: