客服热线:18391752892

彻底平仓的一个写法

   日期:2019-01-12     浏览:259    
马上注册,结交更多好友,下载更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 bool CloseOrders(int orderMode,string myType)
{
 int OrderCount=0, gle=0;
 int cnt,mode;
 int TicketArray[100];
 double ClosePrice=0;
 string stringOrderMode;
 
 if (orderMode==OP_BUY) stringOrderMode= BUY
 if (orderMode==OP_SELL) stringOrderMode= SELL

// first, we retrieve all ticket IDs for existing orders to close out 
 for(cnt=OrdersTotal()-1;cnt cnt--)
 {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
    {
     mode=OrderType();
     if (isOrder(OrderSymbol(), OrderMagicNumber(), OrderComment(), myType))
    {
     if (mode==orderMode)
     {
        TicketArray[OrderCount]=OrderTicket();
        Print( OrderCount: ,OrderCount, , Ticket: ,TicketArray[OrderCount], Selected for closure.
        OrderCount++;
   }
     }
 }
 else
 {
    gle=GetLastError();
     Print( Error selecting an order in CloseAllOrders!!! Error # ,gle, : ,ErrorDescription(gle));
     return(false); //Since returning false, the caller will retry this function again
 }
 }

// second, we close out all applicable orders in the array. this two step method prevents problems closing out all orders successfully at once.
 int retries=0;
 while(retries 20)
 {
    for(cnt=0;cnt OrderCount;cnt++)
    {
     if (TicketArray[cnt] 0)
     {
     if (OrderSelect(TicketArray[cnt], SELECT_BY_TICKET, MODE_TRADES))
     {
        mode=OrderType();
        GetTradeContext(); RefreshRates();
        if (mode==OP_BUY) ClosePrice=NormalizeDouble(Bid,Digits);
        if (mode==OP_SELL) ClosePrice=NormalizeDouble(Ask,Digits);
        if (mode == (orderMode+2) || mode == (orderMode+4))
        {
         if (OrderDelete(OrderTicket()))
         {
         TicketArray[cnt]=0;
         }
         else     
         {
         gle=GetLastError();
         Print( Error closing pending order # ,TicketArray[cnt], : Error # ,gle, : ,ErrorDescription(gle));
         }
        }
        else
        {
         if (CloseOrder(OrderTicket(), OrderLots(), OrderType()))
         {
         
         TicketArray[cnt]=0;
         }
         else
         {
         gle=GetLastError();
         Print( Error closing order # ,TicketArray[cnt], : Error # ,gle, : ,ErrorDescription(gle));
         }
        }
     }
     else
     {
        gle=GetLastError();
        Print( Error selecting order # ,TicketArray[cnt], : Error # ,gle, : ,ErrorDescription(gle));
     }
     }
    }
 retries++;
 }
 
 bool CloseAllSuccess=true;
 for(cnt=0;cnt OrderCount;cnt++)
 {
    if (TicketArray[cnt] 0)
    {
     CloseAllSuccess=false;
     alert( Could not close ticket # ,TicketArray[cnt], ! Will keep retrying.
    }
 }
 
 if(CloseAllSuccess)
 {
    return(true);
 }
 else
 {
    Print( There was a critical error closing one or more ,stringOrderMode, orders when trying to CLOSE ALL!
    return(false); //Since returning false, the caller will retry this function again
 }
}复制代码

外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!


特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关行情
推荐行情
点击排行