- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //==============================检查市场市价单和历史订单,在历史订单中发现同批次的市价单有已经止盈的订单平仓,就继续后面操作(全部平仓操作)
- void DdeAll()
- {
- if( OrdersTotal()!=0);
- for (int i=0; i<OrdersTotal(); i++)//此段获取市价订单编码
- if(OrderSelect(i,SELECT_BY_POS))
- if(OrderSymbol()==Symbol())
- if(OrderMagicNumber()==magic || magic==magic)
- {
- string OrderCommentI=OrderComment();//提取市价订单编码
-
- for (int pos=0; pos<=OrdersHistoryTotal(); pos++){//此段获取历史平仓订单编码
- if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
- if(OrderSymbol()==Symbol())
- if(OrderMagicNumber()==magic || magic==magic)
- {
- int Orderhistoryticket = OrderTicket(); //提取历史订单编码
-
- if(OrderCommentI==Orderhistoryticket) // 判断两段提取内容是否一样,是就是符合要求,执行下面操作
- {
- Closeall(); //执行全部市价单平仓和删除挂单操作
- }
- }
- }}}
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- void Closeall() //全部市价单平仓和删除挂单操作模块
- {
- //----
- int tick[200];
- int PingFlag=0,SlipPoints=3;
- int j=0,i;
- for(i=0;i<OrdersTotal();i++)
- {
- OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
- //
- j++;
- tick[j]=OrderTicket();
- Print("全部平仓:",tick[j]);
- }
- if(j!=0)
- {
- for(i=1;i<=j;i++)
- {
- OrderSelect(tick,SELECT_BY_TICKET);
- if(OrderType()==OP_BUY)
- {
- if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),SlipPoints)==false)
- {
- PingFlag=1;
- Print("多头平仓失败"+GetLastError());
- }
- }
-
- OrderSelect(tick,SELECT_BY_TICKET);
- if(OrderType()==OP_BUYSTOP)
- {
- if(OrderDelete(OrderTicket(),CLR_NONE)==false)
- {
- PingFlag=1;
- Print("多头挂单撤销失败"+GetLastError());
- }
- }
-
- if(OrderType()==OP_BUYLIMIT)
- {
- if(OrderDelete(OrderTicket(),CLR_NONE)==false)
- {
- PingFlag=1;
- Print("多头Limit挂单撤销失败"+GetLastError());
- }
- }
-
- if(OrderType()==OP_SELL)
- {
- if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),SlipPoints)==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("空头limit挂单撤销失败"+GetLastError());
- }
- }
- }
- }
- if(PingFlag==0)
- {
- Alert("平仓完成");
- }else{
- Alert("平仓不彻底,再来一次");
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
复制代码
|