Закрывать «старые» ордера (функция MQL4 )

Чтобы закрыть ордер, долго «висящий» в рынке можно данной функцией. Параметр функции — количество баров, после прохождения которых ордер будет закрыт.

void CloseTradesBarsAgo(int bars)
  {
   int count = 0;
   for(int i = OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(iBarShift(Symbol(),0,OrderOpenTime(),false)>=bars)
           {
            if(OrderSymbol()==Symbol() && OrderType()<=1 && OrderMagicNumber()==Magic)
              {
               if(OrderType()==OP_BUY)
                  OrderClose(OrderTicket(),OrderLots(),Bid,30,clrRosyBrown);
               if(OrderType()==OP_SELL)
                  OrderClose(OrderTicket(),OrderLots(),Ask,30,clrRosyBrown);
              }
           }
        }
     }
  }

Поделись с друзьями: