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

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

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

怎样从历史订单中判断有新的单子平仓

[复制链接]
发表于 2018-6-19 18:29:41 | 显示全部楼层 |阅读模式
赵老师您好,我是MT5学员

在MT4里面我想根据历史订单的OrderTicket()来判断是否有新的单子平仓。

思路是这样的:
记录最近的历史单子的OrderTicket(),假如有新的单子平仓,那么新的OrderTicket()就会比之前记录的值大,这就说明有新的单子平仓了
请问怎样用代码实现,或者有没有别的方法?
回复

使用道具 举报

发表于 2018-6-25 09:05:14 | 显示全部楼层
假如有新的单子平仓,那么新的OrderTicket()就会比之前记录的值大.
你这个想法本身就是错的,因为ticket是根据开仓时间来标号的。并不是平仓时间。
也就是说 有可能一个历史单子的ticket不是最大的,但是它却是最后平仓的。
你就记录历史单子,最后一张单子的ticket,然后实时检测最后一张单子的ticket 是否跟他一样,如果不一样说明 有新的单子已经平仓了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-25 22:52:00 | 显示全部楼层
感谢老师的回答。
我按照这个思路写的代码,不知道哪里有问题,这个功能应该是很简单的,就是没写出来。当有新订单平仓时,检测不到,老师帮我看下

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property version   "1.00"
#property strict
int maxticket=INT_MIN;
int OnInit()
  {

   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {

  }

void OnTick()
  {
    int historyticket=historyticket();
    if(maxticket<historyticket)
      {
        maxticket=historyticket;
      }
    if(maxticket>historyticket)
      {
        Print("有新订单平仓");
      }
  }

// 历史单最近一单ticket
int historyticket()
   {
     int t=OrdersHistoryTotal();
     int ticket=0;
     for(int i=t-1;i>=0;i--)
       {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
           {
             ticket=OrderTicket();
             break;
           }
       }
     return(ticket);  
   }
回复 支持 反对

使用道具 举报

发表于 2018-6-26 09:15:46 | 显示全部楼层
你自己把自己的思路实现了。但是 你的思路是有问题的,你看我是怎么回答你的。上面 我已经给你指出了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-16 09:50:06 | 显示全部楼层
这个思路写出来了,很简单,感谢老师!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-6-4 05:44 , Processed in 0.089865 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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