Предложение сделать новую функцию CloseAllOrders

 
Здравствуйте
работаю на реале и, кажется, заметил кое-что интересное. Если открыто много позиций по одной валюте или несколько (портфель валют) и при каких-то условиях нужно все позиции оперативно закрыть. Если делать цикл по выбору каждой открытой позиции и её закрывать через OrderClose, то цена может уже уйти в ненужную сторону. Может было бы целесооьразно сделать функцию CloseAllOrders, которая закрыла бы все открытые позиции по текущей цене по всем валютам или с указанием конкретной валюты?
Или как идет обработка торговых сигналов?
Если цена шевельнулась, эксперт прогнал свою программу. Если, как было сказано выше, закрыть позиции через цикл, то сигналы выстроятся в очередь и будут закрываться по принципу первый пришел-первый ушел... Или в данной функции нет смысла? Ниже представлен код. Limit_po_kontraktam означает количество контрактов, открытых по данной валюте... Например, если количество контрактов, открытых по EURUSD, больше установленного числа Limit_po_kontraktam, то закрывать все позиции при наличии дохода в +10 USD.
p.s. проблема в том, что мне показалось, что цена успела уйти в ненужную сторону, и я получил убыток... Но я могу ошибаться... Интересно было бы узнать мнение людей.
Profit=0;
    if ((buy==Limit_po_kontraktam) || (sell==Limit_po_kontraktam))
          {
            if(AccountProfit()>10)
               {
                  for(cnt=0;cnt<total;cnt++)
                     {
                        OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
                 
                        if(OrderType()==OP_BUY)
                           {
                              OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
                           }
                        if(OrderType()==OP_SELL)
                           {
                              OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
                           }
                     }
               }
          }