请选择 进入手机版 | 继续访问电脑版
外汇ea之家 首页  注册  登录
现在注册
已注册用户请  登录
外汇ea之家    mql4编程中文手册

彻底平仓的一个写法

  •   towwailok · 2018-7-8 20:00:29 · 111 次点击 ·阅读模式     

    马上注册,结交更多好友,下载更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    1. bool CloseOrders(int orderMode,string myType)
    2. {
    3.   int OrderCount=0, gle=0;
    4.   int cnt,mode;
    5.   int TicketArray[100];
    6.   double ClosePrice=0;
    7.   string stringOrderMode;
    8.   
    9.   if (orderMode==OP_BUY)  stringOrderMode="BUY";
    10.   if (orderMode==OP_SELL) stringOrderMode="SELL";

    11. // first, we retrieve all ticket IDs for existing orders to close out  
    12.   for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
    13.   {
    14.     if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
    15.     {
    16.       mode=OrderType();
    17.       if (isOrder(OrderSymbol(), OrderMagicNumber(), OrderComment(), myType))
    18.     {
    19.         if (mode==orderMode)
    20.         {
    21.           TicketArray[OrderCount]=OrderTicket();
    22.           Print("OrderCount: ",OrderCount,", Ticket: ",TicketArray[OrderCount]," Selected for closure.");
    23.           OrderCount++;
    24.      }
    25.       }
    26.   }
    27.   else
    28.   {
    29.     gle=GetLastError();
    30.       Print("Error selecting an order in CloseAllOrders!!! Error #",gle,": ",ErrorDescription(gle));
    31.       return(false); //Since returning false, the caller will retry this function again
    32.   }
    33.   }

    34. // second, we close out all applicable orders in the array.  this two step method prevents problems closing out all orders successfully at once.
    35.   int retries=0;
    36.   while(retries<20)
    37.   {
    38.     for(cnt=0;cnt<OrderCount;cnt++)
    39.     {
    40.       if (TicketArray[cnt]>0)
    41.       {
    42.         if (OrderSelect(TicketArray[cnt], SELECT_BY_TICKET, MODE_TRADES))
    43.         {
    44.           mode=OrderType();
    45.           GetTradeContext(); RefreshRates();
    46.           if (mode==OP_BUY)  ClosePrice=NormalizeDouble(Bid,Digits);
    47.           if (mode==OP_SELL) ClosePrice=NormalizeDouble(Ask,Digits);
    48.           if (mode == (orderMode+2) || mode == (orderMode+4))
    49.           {
    50.             if (OrderDelete(OrderTicket()))
    51.             {
    52.               TicketArray[cnt]=0;
    53.             }
    54.             else        
    55.             {
    56.               gle=GetLastError();
    57.               Print("Error closing pending order #",TicketArray[cnt],": Error #",gle,": ",ErrorDescription(gle));
    58.             }
    59.           }
    60.           else
    61.           {
    62.             if (CloseOrder(OrderTicket(), OrderLots(), OrderType()))
    63.             {
    64.               
    65.               TicketArray[cnt]=0;
    66.             }
    67.             else
    68.             {
    69.               gle=GetLastError();
    70.               Print("Error closing order #",TicketArray[cnt],": Error #",gle,": ",ErrorDescription(gle));
    71.             }
    72.           }
    73.         }
    74.         else
    75.         {
    76.           gle=GetLastError();
    77.           Print("Error selecting order #",TicketArray[cnt],": Error #",gle,": ",ErrorDescription(gle));
    78.         }
    79.       }
    80.     }
    81.   retries++;
    82.   }
    83.   
    84.   bool CloseAllSuccess=true;
    85.   for(cnt=0;cnt<OrderCount;cnt++)
    86.   {
    87.     if (TicketArray[cnt]>0)
    88.     {
    89.       CloseAllSuccess=false;
    90.       Alert("Could not close ticket #",TicketArray[cnt],"! Will keep retrying.");
    91.     }
    92.   }
    93.   
    94.   if(CloseAllSuccess)
    95.   {
    96.     return(true);
    97.   }
    98.   else
    99.   {
    100.     Print("There was a critical error closing one or more ",stringOrderMode," orders when trying to CLOSE ALL!");
    101.     return(false); //Since returning false, the caller will retry this function again
    102.   }
    103. }
    复制代码


    111 次点击  
    收藏  加入淘专辑0
    添加一条新回复
    您需要登录后才可以回帖 登录 | 注册

    请勿自己恶意顶贴
    DigitalOcean  DigitalOcean
    关于我们   广告投放   我们的愿景   帮助中心   感谢   友站   外汇交易平台大全  
      最大的外汇智能交易社区!
    外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!
    快速回复 返回顶部 返回列表
    在线客服 意见反馈 常见问题 回到顶部