设为首页 收藏本站 切换语言

LastOpenTime()获得最新开仓订单的开仓时间,可用来设定两个订单之间的开仓时间间隔

| 发表于 2023-3-1 10:18:17 | 显示全部楼层 |复制链接
函数的定义:
datetime LastOpenTime(string SymbolX,int OrderTypeX,int MagicX)
  {
   datetime OpenTime=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i, SELECT_BY_POS))

if((OrderSymbol()==SymbolX||
SymbolX=="-1")&&(OrderMagicNumber()==MagicX||MagicX==-1)&&(OrderType()==OrderTypeX||OrderTypeX==-1))
           {
            OpenTime=OrderOpenTime();
            break;
           }
   return(OpenTime);
  }

以下是一些函数的具体说明,我发出来,大家看一下:
SymbolX:订单筛选的交易品种,一般设置当前品种即可,也就是Symbol();“-1”代表不筛选交易品种。
OrderTypeX:订单筛选的订单类型,0代表多单,1代表空单。OP_BUY是常量0,OP_SELL是常量1。-1代表不筛选订单类型。
MagicX:订单的魔术码,你的EA的魔术码是多少,这里填上即可


这个是一个hub友说上来的,但是具体怎么调用实现这个函数到达我们想要的效果呢,有没有哪位大佬赐教一下,比如说,我想间隔10分钟,通过这个函数怎么去实现??
举报

评论 使用道具

精彩评论9

tylzqiqi
C
| 发表于 2023-3-1 10:45:27 | 显示全部楼层
我也想知道。。。
举报

点赞 评论 使用道具

ken138888
B
| 发表于 2023-3-1 20:32:20 | 显示全部楼层
坐等高手
举报

点赞 评论 使用道具

westwuwei
DDD
| 发表于 2023-3-2 23:02:26 | 显示全部楼层
我们不用 mt4 本身的 c 语言编程,我们使用 mtapi4 机制通过更为高级的 .net 框架进行编程,所以我只能就你贴的这代码跟你说一下我的理解。

这个函数,以倒序的方式查询了当前持仓单中符合“标的、魔术码、多空方向”条件的第一个单子的开仓时间,也就是最后一个开仓时间。如果没有查到单子,则返回0。

那么当你的代码要开仓之前,先调用这个函数查询时间,如果函数返回时间不为0,并且“当前时间”小于或者等于“所返回的时间加上10分钟”,则不应该开仓。
举报

点赞 评论 使用道具

pefw123
DDD
 楼主 | 发表于 2023-3-3 20:16:44 | 显示全部楼层
westwuwei 发表于 2023-3-2 23:02
我们不用 mt4 本身的 c 语言编程,我们使用 mtapi4 机制通过更为高级的 .net 框架进行编程,所以我只能就你 ...

怎么去用?
怎么去引用??
我用的时候,主函数引用的时候出现错误,不知道是什么原因
举报

点赞 评论 使用道具

pefw123
DDD
 楼主 | 发表于 2023-3-3 20:20:00 | 显示全部楼层
datetime LastOpenTime(string SymbolX,int OrderTypeX,int MagicX)
  {
   datetime OpenTime=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i, SELECT_BY_POS))
        
if((OrderSymbol()==SymbolX||
SymbolX=="-1")&&(OrderMagicNumber()==订单识别码||MagicX==-1)&&(OrderType()==OrderTypeX||OrderTypeX==-1))
           {
            OpenTime=OrderOpenTime();
            break;
           }
   return(OpenTime);
  }   
   //+---------------------
   
   bool timedifference()
   {
   if (LastOpenTime()-TimeCurrent()>=开单间隔)return true;
   return false;
   }
报错提示 'LastOpenTime' - wrong parameters count       
举报

点赞 评论 使用道具

pefw123
DDD
 楼主 | 发表于 2023-3-3 20:22:06 | 显示全部楼层
pefw123 发表于 2023-3-3 20:16
怎么去用?
怎么去引用??
我用的时候,主函数引用的时候出现错误,不知道是什么原因

datetime LastOpenTime(string SymbolX,int OrderTypeX,int MagicX)
  {
   datetime OpenTime=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i, SELECT_BY_POS))
        
if((OrderSymbol()==SymbolX||
SymbolX=="-1")&&(OrderMagicNumber()==订单识别码||MagicX==-1)&&(OrderType()==OrderTypeX||OrderTypeX==-1))
           {
            OpenTime=OrderOpenTime();
            break;
           }
   return(OpenTime);
  }   
   //+---------------------
   
   bool timedifference()
   {
   if (LastOpenTime()-TimeCurrent()>=开单间隔)return true;
   return false;
   }

其中“开单间隔”我是在外部输入变量那里已经 定义了也就是extern int 开单间隔=600;
报错提示 'LastOpenTime' - wrong parameters count
举报

点赞 评论 使用道具

westwuwei
DDD
| 发表于 2023-3-3 20:39:32 | 显示全部楼层
调用 LastOpenTime 要提供3个参数。
举报

点赞 评论 使用道具

dongxu64
DDD
| 发表于 2023-3-5 11:22:09 | 显示全部楼层
路过学习,谢谢
举报

点赞 评论 使用道具

pefw123
DDD
 楼主 | 发表于 2023-3-20 21:30:28 | 显示全部楼层
westwuwei 发表于 2023-3-3 20:39
调用 LastOpenTime 要提供3个参数。

如何调用,可不可以赐教一下,感谢
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)