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

130 9
| 发表于 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分钟,通过这个函数怎么去实现??
最近访问 头像模式
举报

收藏 0 点赞 0 评论 使用道具

精彩评论9

跳转到指定楼层
tylzqiqi
DDD
2#
| 发表于 2023-3-1 10:45:27 | 只看该作者
我也想知道。。。
举报

点赞 评论 使用道具

ken138888
C
3#
| 发表于 2023-3-1 20:32:20 | 只看该作者
坐等高手
举报

点赞 评论 使用道具

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

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

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

点赞 评论 使用道具

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

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

点赞 评论 使用道具

pefw123
DDD
6#
 楼主 | 发表于 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
7#
 楼主 | 发表于 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
8#
| 发表于 2023-3-3 20:39:32 | 只看该作者
调用 LastOpenTime 要提供3个参数。
举报

点赞 评论 使用道具

dongxu64
DDD
9#
| 发表于 2023-3-5 11:22:09 | 只看该作者
路过学习,谢谢
举报

点赞 评论 使用道具

pefw123
DDD
10#
 楼主 | 发表于 2023-3-20 21:30:28 | 只看该作者
westwuwei 发表于 2023-3-3 20:39
调用 LastOpenTime 要提供3个参数。

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

点赞 评论 使用道具

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