Нужен совет...

 
Добрый день! Прошу помощи является условие закрытия ордеров нужно закрывать при if ( GetOrdersProfit ( OP_BUY ) > = 0.0) закрываем на продаже а при if ( GetOrdersProfit ( OP_SELL ) > = 0.0) на покупку. Как правильно написать закрытия , у меня только получается закрыть все сразу. Спасибо 
if(GetOrdersProfit(OP_BUY) >= 0.0)
{
  //Тут закрываем ордера на продажу.
}
if(GetOrdersProfit(OP_SELL) >= 0.0)
{
  //Тут закрываем ордера на покупку.
}
 
как-то так:

//////////////////////////////////////в тело советника\\\\\\\\\\\\\\\
if(GetOrdersProfit(OP_BUY) >= 0.0)
{
  closeall(0); //закрыть только покупки
}
if(GetOrdersProfit(OP_SELL) >= 0.0)
{
  closeall(1); //закрыть только продажи
}
if(/*условие на закрытие всех рыночных позиций*/)  closeall(10); //закрыть все рыночные
/////////////////////////////////////

void closeall(int typ) //функция выборочного закрытия позиций
{
 bool TicketClosed=false;
 if(typ>1 && typ!=10) 
  {
   Print("wrong order type!"); return;
  }
 for(int h=OrdersTotal()-1; h>=0; h--)
 {
  if(OrderSelect(h,SELECT_BY_POS,MODE_TRADES))
  {
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && (OrderType()==typ || typ==10))
    {
          TicketClosed=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Yellow);
    }
  }
 }
}

тут ещё всякие ошибки обрабатывать нужно, это уже по вкусу.
 
Большое спасибо за помощь. Все работает.
Причина обращения: