这个需求和时间有关系,想到了 TimeLocal() ,TimeCurrent() ,Time[0] 。
具体说明
TimeLocal() :本机电脑的时间。如:TimeLocal: 2019.02.25 11:22:42 。和 TimeCurrent()差 6 个小时。
TimeCurrent() :服务器的时间。如:TimeCurrent: 2019.02.25 05:22:42 。
Time[0] :是0号K线的开盘时间。如:2019年2月25日05时0分0秒0毫秒
方案一:使用 TimeCurrent
每次心跳,取 TimeCurrent 时间,分别取出 分钟和秒数 。
int m=TimeMinute(TimeCurrent());
int s=TimeSeconds(TimeCurrent());
if(m==0 && s==0)
{
return "在整点,可以往 下进行";
}
问题:EA交易测试中,发现 TimeLocal() 和 TimeCurrent() 相同。
假设在 整点 (0分0秒)时,没有心跳进入,就不能触发 EA 业务。
总结:此方案不可以用。
//////////////
方案二:使作Time[0]
每次心跑,取Time[0]时间,分别取出分和秒。
int m=TimeMinute(Time[0]);
int s=TimeSeconds(Time[0]);
if(m==0 && s==0)
{
return "有新的K线生成,可以往下进行";
}
问题: 每次心跳时入时,Time[0] 的开盘时间 ,都是相同的。
如 看H1图,每次Time[0]进入 的时间,都是 19.02.25 05:00 。
结决:用全局变量 记录 datetime t=0;
作用: 每根k线只运行一次,记录每次Time[0] (是每次的开盘时间)。作用和每次心跳比较,相同时不运行。
此方案不用担心 在整点时,没有心跳进入,而不触发EA。
网友评论