XM外汇平台

0.18 Point
. 欧元点差

0.45 Point
. 黄金点差

平台特点:

FCA监管,银联出入金,888杠杆,新客户赠50美金试用金.

[编程笔记] 检查市场市价单和历史订单,在历史订单中发现同批次的市价单有已经止盈的订单平仓,就继续后面操作(全部平仓操作)

[复制链接]
admin 发表于 2016-8-18 17:53:31 | 显示全部楼层 |阅读模式
查看: 1843|回复: 1
  1. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. //==============================检查市场市价单和历史订单,在历史订单中发现同批次的市价单有已经止盈的订单平仓,就继续后面操作(全部平仓操作)
  3. void DdeAll()
  4.   {
  5. if( OrdersTotal()!=0);
  6.    for (int i=0; i<OrdersTotal(); i++)//此段获取市价订单编码
  7.    if(OrderSelect(i,SELECT_BY_POS))
  8.    if(OrderSymbol()==Symbol())
  9.    if(OrderMagicNumber()==magic || magic==magic)
  10.     {
  11.    string OrderCommentI=OrderComment();//提取市价订单编码
  12.    
  13.    for (int pos=0; pos<=OrdersHistoryTotal(); pos++){//此段获取历史平仓订单编码
  14.    if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
  15.    if(OrderSymbol()==Symbol())
  16.    if(OrderMagicNumber()==magic || magic==magic)
  17.    {
  18.    int Orderhistoryticket = OrderTicket(); //提取历史订单编码
  19.    
  20.    if(OrderCommentI==Orderhistoryticket) // 判断两段提取内容是否一样,是就是符合要求,执行下面操作
  21.   {  
  22.    Closeall();  //执行全部市价单平仓和删除挂单操作
  23.   }
  24.   }
  25.   }}}

  26. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  27. void Closeall()  //全部市价单平仓和删除挂单操作模块
  28.   {
  29. //----
  30.    int tick[200];
  31.    int PingFlag=0,SlipPoints=3;
  32.    int j=0,i;
  33.    for(i=0;i<OrdersTotal();i++)
  34.    {
  35.       OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
  36.       //
  37.       j++;
  38.       tick[j]=OrderTicket();
  39.       Print("全部平仓:",tick[j]);
  40.    }

  41.    if(j!=0)
  42.    {
  43.       for(i=1;i<=j;i++)
  44.       {
  45.          OrderSelect(tick,SELECT_BY_TICKET);
  46.          if(OrderType()==OP_BUY)
  47.          {
  48.             if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),SlipPoints)==false)
  49.             {
  50.                PingFlag=1;
  51.                Print("多头平仓失败"+GetLastError());
  52.             }
  53.          }
  54.       
  55.          OrderSelect(tick,SELECT_BY_TICKET);
  56.          if(OrderType()==OP_BUYSTOP)
  57.          {
  58.             if(OrderDelete(OrderTicket(),CLR_NONE)==false)
  59.             {
  60.                PingFlag=1;
  61.                Print("多头挂单撤销失败"+GetLastError());
  62.             }
  63.          }
  64.       
  65.          if(OrderType()==OP_BUYLIMIT)
  66.          {
  67.             if(OrderDelete(OrderTicket(),CLR_NONE)==false)
  68.             {
  69.                PingFlag=1;
  70.                Print("多头Limit挂单撤销失败"+GetLastError());
  71.             }
  72.          }
  73.       
  74.          if(OrderType()==OP_SELL)
  75.          {
  76.             if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),SlipPoints)==false)
  77.             {
  78.                PingFlag=1;
  79.                Print("空头平仓失败"+GetLastError());
  80.             }
  81.          }
  82.       
  83.          if(OrderType()==OP_SELLSTOP)
  84.          {
  85.             if(OrderDelete(OrderTicket(),CLR_NONE)==false)
  86.             {
  87.                PingFlag=1;
  88.                Print("空头挂单撤销失败"+GetLastError());
  89.             }
  90.          }
  91.       
  92.          if(OrderType()==OP_SELLLIMIT)
  93.          {
  94.             if(OrderDelete(OrderTicket(),CLR_NONE)==false)
  95.             {
  96.                PingFlag=1;
  97.                Print("空头limit挂单撤销失败"+GetLastError());
  98.             }
  99.          }
  100.       }
  101.    }

  102.    if(PingFlag==0)
  103.    {
  104.       Alert("平仓完成");
  105.    }else{
  106.       Alert("平仓不彻底,再来一次");
  107.    }
  108. }


  109. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




复制代码

回复

使用道具 举报

 楼主| admin 发表于 2017-1-25 23:52:45 | 显示全部楼层
  1. //=============================获取市场上历史订单最后单的盈利金额【完整】
  2. double orderPrints(double magic)
  3. {
  4.    double orderPrint; //获取持仓单第一单订单开仓手数
  5.    for(int pos = OrdersHistoryTotal() - 1; pos >= 0; pos--)
  6.      {
  7.        if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
  8.       {
  9.         if(OrderSymbol() == Symbol() && OrdersHistoryTotal()!=0 )
  10.          {
  11.           if (OrderTicket()!=0)
  12.           {
  13.            orderPrint = OrderProfit();
  14.            break;
  15.           }
  16.         }
  17.       }
  18.     }
  19.    return (orderPrint);
  20. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ| 小黑屋|手机版|Archiver|【领汇网】

GMT+8, 2026-3-23 01:36 , Processed in 0.214311 second(s), 23 queries .

【领汇网】© 小小网站领汇人生点滴.           ICP证:粤ICP备15007435号

© 2019-2020 lh321.com.版权所有  DZ! X32

快速回复 返回顶部 返回列表