老王吧 发表于 2017-2-16 13:02:42

自定义函数 平所有持仓单(含挂单)

void CloseAllOrder()//平掉所有仓位包括挂单
{
int tick;
PingFlag=0;
int j=0;
for(int i=0;i<OrdersTotal();i++)
   {
   OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
   {j=j+1;
      tick=OrderTicket();      
      Print("全部平仓! :",tick);   
   }
   }
if (j!=0)
{
   for(i=1;i<=j;i++)
    {
   OrderSelect(tick, SELECT_BY_TICKET);
   if(OrderType()==OP_BUY)
      {
       if(OrderClose(OrderTicket(),OrderLots(),Bid,滑点可接受范围)==false)
       {
      PingFlag=1;
      Print("多头平仓失败"+GetLastError());
       }
      }
      
   //OrderSelect(tick, SELECT_BY_TICKET);
   if(OrderType()==OP_BUYSTOP)
      {
       if(OrderDelete(OrderTicket(),CLR_NONE)==false)
       {
      PingFlag=1;
      Print("多头挂单撤销失败"+GetLastError());
       }
      }
   //OrderSelect(tick, SELECT_BY_TICKET);
   if(OrderType()==OP_BUYLIMIT)
      {
       if(OrderDelete(OrderTicket(),CLR_NONE)==false)
       {
      PingFlag=1;
   Print("多头挂单撤销失败"+GetLastError());
       }
      }
   if(OrderType()==OP_SELL)
      {
       if(OrderClose(OrderTicket(),OrderLots(),Ask,滑点可接受范围)==false)
       {
      PingFlag=1;
      Print("空头平仓失败"+GetLastError());
       }
      }
      
      if(OrderType()==OP_SELLSTOP)
      {
       if(OrderDelete(OrderTicket(),CLR_NONE)==false)
       {
      PingFlag=1;
      Print("空头挂单撤销失败"+GetLastError());
       }
      }   
      if(OrderType()==OP_SELLLIMIT)
      {
       if(OrderDelete(OrderTicket(),CLR_NONE)==false)
       {
      PingFlag=1;
      Print("空头挂单撤销失败"+GetLastError());
       }
      }
    }
   }
if (PingFlag==0) PingStop=1;
}

ssvlq 发表于 2018-9-25 14:46:48

点赞
页: [1]
查看完整版本: 自定义函数 平所有持仓单(含挂单)