智能交易网,程序化交易,自动交易,量化交易

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

参加MT4智能交易编程培训,7课免费在线试听MT4指标,EA代写,或EA指标加密账户远程验证服务 最完善商业MT4跟单系统(0.1秒极速响应不漏单)
为论坛做贡献有奖学金,奖学金可直接换真钱 扫本站微信公 众号部分视频课程指标EA免费得智能交易网MT4操盘神器,扫公众号免费得
查看: 4530|回复: 5

请教一个挂单成交删除另一个挂单

[复制链接]
发表于 2011-11-12 20:11:35 | 显示全部楼层 |阅读模式
请教老师:
       如果同时下两张挂单,当有一张挂单成交后,删除另一张挂单,即:怎样判断一张挂单成交或删除后,删除另一张挂单
      怎么能实现,希望能给出个源代码的例子谢谢!
回复

使用道具 举报

发表于 2011-11-14 18:50:41 | 显示全部楼层

  1. //+------------------------------------------------------------------+
  2. //|                                             挂单成交删除挂单.mq4 |
  3. //|                       Copyright ?2011, MetaQuotes Software Corp. |
  4. //|                                        http://www.zhinengjiaoyi.com |
  5. //+------------------------------------------------------------------+
  6. #property copyright "Copyright ?2011, MetaQuotes Software Corp."
  7. #property link      "http://www.metaquotes.net"
  8. int init()
  9.   {
  10.     buystop(0.1,0,0,Symbol()+"buy",Bid+200*Point,1);//程序一运行就挂一个buystop 和sellstop测试单。然后
  11.     sellstop(0.1,0,0,Symbol()+"sell",Bid-200*Point,1);//看我们在start函数中如何演示当一种一个挂单成交后,立即删除另一个挂单
  12.    return(0);
  13.   }
  14. int deinit()
  15.   {
  16.     return(0);
  17.   }
  18. int start()
  19.   {
  20.     for(int i=0;i<OrdersTotal();i++)
  21.          {
  22.              if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  23.                {
  24.                  if(OrderComment()==(Symbol()+"buy"))//寻找我们当初做Symbol()+"buy"这个标记的单子
  25.                    {
  26.                      if(OrderType()==OP_BUY)//如果这个单子的类型从原来的OP_BUYSTOP变成了OP_BUY,就说明他挂单成交了
  27.                        {
  28.                          delSELLorder();//删除另一个sellstop挂单
  29.                        }                 
  30.                    }
  31.                  if(OrderComment()==(Symbol()+"sell"))//寻找我们当初做Symbol()+"sell"这个标记的单子
  32.                    {
  33.                      if(OrderType()==OP_SELL)//如果这个单子的类型从原来的OP_SELLSTOP变成了OP_SELL,就说明他挂单成交了
  34.                        {
  35.                          delBUYorder();//删除另一个buystop挂单
  36.                        }                 
  37.                    }
  38.                 }
  39.          }
  40.    return(0);
  41.   }
  42. void  delBUYorder()
  43.   {
  44.      for(int i=0;i<OrdersTotal();i++)
  45.          {
  46.              if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  47.                {
  48.                  if(OrderComment()==(Symbol()+"buy"))//寻找我们当初做Symbol()+"buy"这个标记的单子
  49.                    {
  50.                      if(OrderType()==OP_BUYSTOP)//如果这个单子的类型还是OP_BUYSTOP,就把他删除
  51.                        {
  52.                           OrderDelete(OrderTicket());
  53.                        }                 
  54.                    }
  55.                 }
  56.          }
  57.   }
  58. void  delSELLorder()
  59.   {
  60.       for(int i=0;i<OrdersTotal();i++)
  61.          {
  62.              if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  63.                {
  64.                  if(OrderComment()==(Symbol()+"sell"))//寻找我们当初做Symbol()+"buy"这个标记的单子
  65.                    {
  66.                      if(OrderType()==OP_SELLSTOP)//如果这个单子的类型还是OP_BUYSTOP,就把他删除
  67.                        {
  68.                           OrderDelete(OrderTicket());
  69.                        }                 
  70.                    }
  71.                 }
  72.          }
  73.   }
  74. int sellstop(double Lots,double sun,double ying,string comment,double price,int magic)
  75.     {
  76.     int kaidanok=0;
  77.     int kaiguan=0;
  78.       Print(comment);
  79.       for(int i=0;i<OrdersTotal();i++)
  80.          {
  81.              if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  82.                {
  83.                  if((OrderComment()==comment))   
  84.                    {
  85.                      kaiguan=1;                     
  86.                    }
  87.                 }
  88.          }
  89.       if(kaiguan==0)
  90.         {
  91.              int ticket=OrderSend(Symbol( ) ,OP_SELLSTOP,Lots,price,300,sun,ying,comment,magic,0,Red);
  92.              kaidanok=ticket;
  93.         }
  94.       return(kaidanok);  
  95.    }
  96. int buystop(double Lots,double sun,double ying,string comment,double price,int magic)
  97.   {
  98.     int kaidanok=0;
  99.     int kaiguan=0;
  100.       for(int i=0;i<OrdersTotal();i++)
  101.          {
  102.              if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  103.                {
  104.                  if((OrderComment()==comment))   
  105.                    {
  106.                      kaiguan=1;                     
  107.                    }
  108.                 }
  109.          }
  110.       if(kaiguan==0)
  111.         {
  112.              int ticket=OrderSend(Symbol( ) ,OP_BUYSTOP,Lots,price,300,sun,ying,comment,magic,0,White);
  113.             kaidanok=ticket;
  114.         }
  115.       return(kaidanok);  
  116.   }
复制代码

挂单成交删除另一个挂单.mq4

4.12 KB, 下载次数: 193

回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-15 15:07:08 | 显示全部楼层
谢谢老师,学习了。
回复 支持 反对

使用道具 举报

发表于 2013-12-28 14:59:03 | 显示全部楼层
看不懂啊
回复 支持 反对

使用道具 举报

发表于 2014-2-23 16:41:31 | 显示全部楼层
如此的厉害
回复 支持 反对

使用道具 举报

发表于 2015-2-7 22:15:02 | 显示全部楼层

谢谢老师,学习了。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|sitemap|智能交易网,程序化交易,自动交易,量化交易 ( 苏ICP备08108698号,苏州智德金网络科技股份有限公司版权所有 )

GMT+8, 2019-11-18 03:46 , Processed in 0.079026 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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