我写了一个小的专家顾问,显示本地电脑时间和新的tick time_msc(刚收到)的时间之间的最大差异。
粗略地说,它只测量TimeLocal()的毫秒数减去最后一次打勾的时间Tick.teme_msc 。使用SymbolInfoTick接收tick。
没怎么取笑它。市场概览中的24个字符。OnTimer()的调用周期为1毫秒。 我正在用SymbolInfoTick轮询所有符号。如果虱子是新的,我就进行测量。
我在晚间测试了专家顾问。以下是结果。
捕获的新蜱虫 46800
本地计算机时间和蜱虫的时间之间的最小时间 -7048毫秒(带减号)。
本地计算机时间与滴答时间之间的平均时间 -6819毫秒(含减号)。
本地计算机时间与滴答时间之间的最大时间差 -97082 毫秒(有加号)。
如何处理这个问题?
看了一下你的代码...
你做得一点都不对。
你需要将流动性最强的工具添加到市场观察中。
然后加上他们的钱盆。
而且,当OnBookEvent()触发时,复制1个tick(最后一个)将有时间,并立即采取本地时间 和比较。
还有,为什么要将本地时间与蜱虫的时间进行比较?
如果你需要知道是否可以进行交易,那么这里有一个函数
//+------------------------------------------------------------------+ //| Expert Check Market Time function | //+------------------------------------------------------------------+ bool CheckMarketTime() { MqlDateTime cur_time, sv_time; cur_time.year = 0; TimeTradeServer(cur_time); //Возвращает расчетное текущее время торгового сервера. if(cur_time.year > 0) { sv_time.year = 0; TimeCurrent(sv_time); //Возвращает последнее известное время сервера if(sv_time.year > 0) { // if((cur_time.day_of_week == int(FirstDay)) || // (cur_time.day_of_week == int(SecondDay))) return(false); //Проверка на выходные if(cur_time.day_of_week == sv_time.day_of_week) { ulong tr_time = sv_time.hour * 3600 + sv_time.min * 60 + sv_time.sec; if(((tr_time >= time_st_mon) && (tr_time < 50370)) || //10:00:01 - 13:59:30 ((tr_time >= time_st_day) && (tr_time < 67470)) || //14:05:01 - 19:44:30 ((tr_time >= time_st_evn) && (tr_time < 85770))) //19:05:01 - 23:49:30 { return(true); } } } } return(false); }

- www.mql5.com
看了一下你的代码...
你做得一点都不对。
你需要将流动性最强的工具添加到市场观察中。
然后,加上这些工具的市场深度。
而且,当OnBookEvent()触发时,复制1个tick(最后一个)将有时间,并立即采取本地时间和比较。
而一般来说,为什么要将本地时间与滴答时间进行比较?
为什么你需要做所有的事情,通过一个堆栈?只是为了使代码看起来更好?如果我在市场概览中有一个符号,这不意味着有一个持续的同步,我可以直接从缓存中访问该符号的最后4096个点(即即时)?在任何情况下,你的想法都需要被测试。我唯一不明白的是,"复制1个刻度(最后)"是什么意思,通过改变杯子来计算刻度?
一般来说,你为什么要把当地时间 与滴答时间进行比较?
根据昨天的价格做出交易决定并不是一个好主意。昨天在100点买入SBER,从算法的角度来看可能是个好主意,但今天你必须在80点卖出。
为什么做任何事情,都要透过玻璃?只是为了使代码看起来更好?如果我有一个符号在市场概览中,这不意味着有一个持续的同步,我可以直接从缓存中访问该符号的最后4096个点(即即时)?在任何情况下,你的想法都需要被测试。我唯一不明白的是,"复制1个刻度(最后)"是什么意思,通过改变杯子来计算刻度?
一般来说,你为什么要把当地时间与滴答时间进行比较?
根据昨天的价格做出交易决定并不是一个好主意。昨天SBER在100可能是一个好主意,从算法的角度来看,但今天你应该在80卖出。
如果你自己知道一切,为什么还要问问题。
按你认为合适的方式行事。
我是在认真地问。当我在MQL中编程时,我意识到无论是帮助还是终端提供的信息都不应该被信任。这不过是一个信息而已。有可能的是,tick给出的信息比SymbolInfoTick 更早(更稳定)。
顺便说一下,这是延迟了一分半钟的滴答声。
新MA 最大差异97082 SBPR-3.19 当地时间2019.03.15 21:05:31.842 滴答时间2019.03.15 21:03:54.760
在这一分钟的勾股史上没有任何犯罪行为。一分钟内就有两支烟。
你,完全忽略了这一点!
完全不关心你的本地时间。
只有交易服务器的时间是重要的!
有交易时段,在这段时间内你可以进行交易。
交易时间不是由你的当地时间决定的。
和交易服务器的时间。
你完全忽略了这一点!
你根本就不关心你的本地时间。
只有交易服务器的时间是重要的!
有交易时段,在这段时间内你可以进行交易。
交易时间不是由你的当地时间决定的。
和交易服务器的时间。
fxsaber 理解我的意思,因为他明白无延迟地获得新点数的重要性,并给出了他的指标的链接,该指标与我的代码做同样的事情,但以图形的形式。它与交换时机没有关系。
我将尝试用我的手指来解释它。
在当地时间16:39.59.999,专家顾问从市场概览中接收每个符号的第一个刻度,并将其储存起来。
在16:40.00.000,专家顾问再次对每个符号的最后一个刻度进行投票。对于其中的一些人,我们得到了新的蜱虫。
大多数新的蜱虫都带有一个大约16:39.59.000的时间(time_msc)。但有一个人以16:38.30.335的成绩出现。
事实证明,在16:39.59.999(当地时间)没有嘀嗒声,但在一毫秒后突然出现,甚至是16:38:30,尽管通常只相差一秒。
在这种蜱虫发生后,不是一个好主意。假设我们要求从实际交易中的非流动性符号中获取最后一个刻度。我们得到了打钩的时间(time_msc)。
与当地时间相差两分钟。马上就会有这样的假设:有人已经知道90秒、60秒或30秒前发生的嘀嗒声,而我们的EA却不知道,可能会被打到限价单,比如说被惩罚。
这个问题必须得到解决。
fxsaber 理解我,因为他理解无延迟获得新点数的重要性,并给了一个链接到他的指标,该指标做了与我的代码类似的事情,但以图形的形式。它与交换时机没有关系。
我将尝试用我的手指来解释它。
在当地时间16:39.59.999,专家顾问从市场概览中接收每个符号的第一个刻度,并将其储存起来。
在16:40.00.000,专家顾问再次对每个符号的最后一个刻度进行投票。对于其中的一些人,我们得到了新的蜱虫。
大多数新的蜱虫都带有一个大约16:39.59.000的时间(time_msc)。但有一个人以16:38.30.335的成绩出现。
事实证明,在16:39.59.999(当地时间)没有嘀嗒声,但在一毫秒后突然出现,甚至是16:38:30,尽管通常只相差一秒。
在这种蜱虫发生后,不是一个好主意。假设我们要求从实际交易中的非流动性符号中获取最后一个刻度。我们得到了打钩的时间(time_msc)。
与当地时间相差两分钟。马上就会有这样的假设:有人已经知道90秒、60秒或30秒前发生的嘀嗒声,而我们的EA并不知道,它可能会受到惩罚,比如说打到限价单。
这个问题必须得到解决。
你不需要 "对抗 "任何东西。 你应该了解终端中是如何接收刻度线的,并正确地了解
正确处理它们!

- www.mql5.com
没有必要去 "对抗 "什么,而是要了解蜱虫是如何进入终端的,并正确地处理它们!
妥善处理它们!
你能最终分享这些知识吗?即使通过你的方法,你能更快地得到一个新的蜱虫事件,结果是你给了我一条鱼而不是一根鱼竿,即没有解释为什么会这样。
你怎么会有信心说你的方法比我的快? 我在文件中错过了什么吗?也许你已经通过实验确定,当订阅一个杯子时,终端更愿意给出新的刻度线?
我将在这个EA中实施切换,从我的方式捕捉新的点位到你的方式。
你能最终分享这些知识吗?即使通过你的方法,你能更快地得到一个新的蜱虫事件,结果你给我的是一条鱼而不是一根鱼竿,即你没有解释为什么会这样。
你怎么会有信心说你的方法比我的快? 我在文件中错过了什么吗?也许你已经通过实验确定,终端通过订阅玻璃更容易给出新的蜱虫?
我将在这个EA中实施切换,从我的方式捕捉新的蜱虫到你的方式。
这里有带注释的源代码。
你觉得懒得去翻阅吗?或者什么是不清楚的?
我写了一个小的专家顾问,它显示了本地计算机时间 和新的tick time_msc(刚收到)的时间之间的最大差异。
粗略地说,它只测量TimeLocal()的毫秒数减去最后一次打勾的时间Tick.teme_msc 。使用SymbolInfoTick接收tick。
没怎么取笑它。市场概览中的24个字符。OnTimer()的调用周期为1毫秒。 我正在用SymbolInfoTick轮询所有符号。如果虱子是新的,我就进行测量。
我已经在晚间测试了专家顾问。以下是结果。
捕获的新蜱虫 46800
本地计算机时间和蜱虫的时间之间的最小时间 -7048毫秒(带减号)。
本地计算机时间和滴答时间之间的平均时间 -6819毫秒(含减号)。
本地计算机时间与滴答时间之间的最大时间差 -97082 毫秒(有加号)。
如何处理这个问题?