Функция модификации выеживается

 
Доброго времени суток.
Имеем конструкцию:


{
ticket = OrderSend(Symbol(),OP_SELL,LotSell,Bid,Slippage,0,0,NULL,Magic,0,Red);
ModifyOrdersSell();
}




void ModifyOrdersSell()
{
    double avg = 0;
    int count  = 0;
    for (int i = OrdersTotal()-1; i>=0; i--)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderSymbol() == Symbol() && OrderType() == OP_SELL)
            {
                avg += OrderOpenPrice()*(OrderLots()/0.01);
                count += OrderLots()/0.01;
            }
        }
    }
    if (count > 0)
    {
    avg = NormalizeDouble(avg/count, Digits);
   
    for (i = OrdersTotal()-1; i>=0; i--)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderSymbol() == Symbol() && OrderType() == OP_SELL)
            {
                bool mod = OrderModify(OrderTicket(), OrderOpenPrice(), 0, NormalizeDouble(avg - TakeProfit*Point, Digits), 0, Red);
            }
        }
    }
    }
   
}




Время от времени, это сооружение шлет через самый густой лес до ближайшего болота.
Ордер открывается, а модифицироваться не хочет.
Закономерность найти не получается.
Либо же, набирая сетку ордеров с увеличением лота, ставит всей сетке тп от нижнего лота, соответственно вся сетка закрывается по ТП но с убытком.
Кто виноват - понятно, вопрос как исправить?)
 

Pecmop:
Доброго времени суток.
Имеем конструкцию:

*** 

        {
                bool mod = OrderModify(OrderTicket(), OrderOpenPrice(), 0, NormalizeDouble(avg - TakeProfit*Point, Digits), 0, Red);

         } 

***
Закономерность найти не получается.
Кто виноват - понятно, вопрос как исправить?)


  bool mod = OrderModify(...);
  if (!mod) Print("Ошибка модификации ордера. Код ошибки=",GetLastError());

 Тут и закономерности увидите и как исправить сообразите.

Причина обращения: