计时器 - 页 2 12345678 新评论 Дмитрий Александрович 2010.08.04 18:05 #11 TheXpert:还有一件事...你们不是兄弟,是吗?这并不意味着没有。每个人的任务都是不同的。 在这里,我们开始...我们能读吗?请告诉我,对诱导者来说,它是如何做到的。我不这么认为,我甚至不知道它是谁 :D好吧,说实话,我还没有遇到过这样的任务,对于我的任务--算得越快越好。我很抱歉,我看了一遍))。没有真正进入哪些线程--发生了什么事。我不知道,我从来没有见过这样的事情。 所以这取决于任务,真的,如果我只运行一些随机的脚本,会敲打一个指标。 或者,另外,我可以把所有的计算和所有的东西都塞进一个单独的线程中的dll中--但这听起来像是一种变态。 Yedelkin 2011.01.21 21:30 #12 Interesting: ...定时器处理不能被调用,直到前一个定时器处理完成。或者简单地说,OnTimer()将不会得到正确的执行,直到应该处理定时器的线程忙碌起来。 为了说明第二个线程不可能启动定时器处理,你可以使用这个例子(哑巴但很清楚)。int OnInit() { //----------------------------------------------------------------------------// //Work variables //----------------------------------------------------------------------------// EventSetTimer(1); //----------------------------------------------------------------------------// return(0); //----------------------------------------------------------------------------// } void OnTimer() { //----------------------------------------------------------------------------// //Work variables //----------------------------------------------------------------------------// Print(TimeLocal()); Sleep(2000); //----------------------------------------------------------------------------// } 那么,事实证明,Timer 事件和NewTick 事件一样可以被忽略?而在某些条件下,它们不能被放在专家顾问的事件队列中? Anton 2011.01.24 14:42 #13 Yedelkin: 那么,事实证明,定时器 事件可以像NewTick 事件一样被忽略?而且,在某些条件下,它可以从专家顾问的事件队列中排除? 在这种情况下,NewTick事件 是一个例外。对其他类型的事件没有检查。如果事件处理程序的运行速度慢于事件队列的填充速度,队列将溢出,一些事件将被跳过。至于上面的例子,它只证实了EA有一个执行线程,而且事件处理是按照事件排队的顺序依次进行的。 Документация по MQL5: Программы MQL5 / События клиентского терминала www.mql5.com Программы MQL5 / События клиентского терминала - Документация по MQL5 Yedelkin 2011.01.24 14:53 #14 antt: 在这种情况下,NewTick事件 是一个例外。对其他事件类型没有检查。如果事件处理程序比事件队列的填充速度慢,队列将溢出,一些事件将被跳过。至于上面的例子,它只证实了EA有一个执行线程,而且事件处理是按照事件排队的顺序依次进行的。 很好,谢谢你的解释!符合逻辑,可以理解,不需要猜测 有趣的是,你关于事件多线程的问题算是得到了解答。我甚至猜到了OnTimer :) [删除] 2011.01.24 15:27 #15 Yedelkin: 因此,事实证明,定时器 事件可以像NewTick 事件一样被忽略?而在某些情况下,它们不能在专家顾问的事件中排队?据我所知,情况是这样的。1.所有事件都放在同一个队列中。如果队列中有一个NewTick事件,或者这样的事件被处理了,那么NewTick被忽略,不被排队。2.程序员选择要处理哪些事件。OnTrade、OnTimer和OnTick的处理程序是基本的,在专家顾问中经常使用。3.在处理一个事件的过程中,其他事件不能被处理。4.如果事件栈溢出,旧的事件将从队列中删除,不作处理。5.在上述三种类型的事件中,Trade的生成频率较低,NewTick的生成频率较高(但上述的ticks可能不包括在队列中)。6.从这个角度看,最有趣的处理程序是OnChartEvent,它处理所有来自图表的事件和自定义事件。而只是大量的这些事件很容易溢出事件队列(如果会有很多这样的事件的话)。在我看来,这种情况下唯一的救命稻草就是OnChartEvent事件是胡乱地、异步地生成的。 Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика www.mql5.com Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5 [删除] 2011.01.24 15:34 #16 Yedelkin:有趣的 是,你关于多线程事件处理的 问题似乎得到了解答。我甚至猜到了OnTimer :)原则上,我对单线程没有疑问,更因为专家顾问本身的代码是在单线程中执行。而我所描述的是一种关于未来的梦想(比如说,关于MT6),届时MT中会有多线程(至少在事件流因某种原因无法分离之前)。我原本至少会把所有的ChartEvent事件分开到一个单独的线程中,但开发者知道得更多...... Yedelkin 2012.05.16 17:38 #17 有什么方法可以让EA在 特定的时间 产生定时器 事件吗 ?例如,在一小时或一天的最后一分钟的开始。 TheXpert 2012.05.16 17:40 #18 Yedelkin:有什么方法可以让EA在 特定的时间 产生定时器 事件吗 ?例如,在一小时或一天的最后一分钟的开始。 当然。 Yedelkin 2012.05.16 17:47 #19 TheXpert: 当然。 如果不是一个秘密,它(方法)是什么样子的? TheXpert 2012.05.16 17:56 #20 Yedelkin: 如果不是一个秘密,它(方法)是什么样子的?使用定时器管理器。我想写一篇文章,但后来不知怎的,我就偏离了方向。虽然它可能看起来不像一篇文章。由于代码和事件队列的单线程性质,具体的时间是行不通的,但平均误差在一秒以内(最大限度受代码对事件的最大执行时间 限制)。此外,只有一个定时器。我可以吗? 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
还有一件事...你们不是兄弟,是吗?
这并不意味着没有。每个人的任务都是不同的。
在这里,我们开始...我们能读吗?请告诉我,对诱导者来说,它是如何做到的。- 我不这么认为,我甚至不知道它是谁 :D
- 好吧,说实话,我还没有遇到过这样的任务,对于我的任务--算得越快越好。
- 我很抱歉,我看了一遍))。没有真正进入哪些线程--发生了什么事。我不知道,我从来没有见过这样的事情。 所以这取决于任务,真的,如果我只运行一些随机的脚本,会敲打一个指标。
或者,另外,我可以把所有的计算和所有的东西都塞进一个单独的线程中的dll中--但这听起来像是一种变态。Interesting:
...定时器处理不能被调用,直到前一个定时器处理完成。或者简单地说,OnTimer()将不会得到正确的执行,直到应该处理定时器的线程忙碌起来。
为了说明第二个线程不可能启动定时器处理,你可以使用这个例子(哑巴但很清楚)。
那么,事实证明,定时器 事件可以像NewTick 事件一样被忽略?而且,在某些条件下,它可以从专家顾问的事件队列中排除?
在这种情况下,NewTick事件 是一个例外。对其他事件类型没有检查。如果事件处理程序比事件队列的填充速度慢,队列将溢出,一些事件将被跳过。至于上面的例子,它只证实了EA有一个执行线程,而且事件处理是按照事件排队的顺序依次进行的。
很好,谢谢你的解释!符合逻辑,可以理解,不需要猜测
有趣的是,你关于事件多线程的问题算是得到了解答。我甚至猜到了OnTimer :)
因此,事实证明,定时器 事件可以像NewTick 事件一样被忽略?而在某些情况下,它们不能在专家顾问的事件中排队?
据我所知,情况是这样的。
1.所有事件都放在同一个队列中。如果队列中有一个NewTick事件,或者这样的事件被处理了,那么NewTick被忽略,不被排队。
2.程序员选择要处理哪些事件。OnTrade、OnTimer和OnTick的处理程序是基本的,在专家顾问中经常使用。
3.在处理一个事件的过程中,其他事件不能被处理。
4.如果事件栈溢出,旧的事件将从队列中删除,不作处理。
5.在上述三种类型的事件中,Trade的生成频率较低,NewTick的生成频率较高(但上述的ticks可能不包括在队列中)。
6.从这个角度看,最有趣的处理程序是OnChartEvent,它处理所有来自图表的事件和自定义事件。
而只是大量的这些事件很容易溢出事件队列(如果会有很多这样的事件的话)。
在我看来,这种情况下唯一的救命稻草就是OnChartEvent事件是胡乱地、异步地生成的。
Yedelkin:
有趣的 是,你关于多线程事件处理的 问题似乎得到了解答。我甚至猜到了OnTimer :)
原则上,我对单线程没有疑问,更因为专家顾问本身的代码是在单线程中执行。
而我所描述的是一种关于未来的梦想(比如说,关于MT6),届时MT中会有多线程(至少在事件流因某种原因无法分离之前)。
我原本至少会把所有的ChartEvent事件分开到一个单独的线程中,但开发者知道得更多......
有什么方法可以让EA在 特定的时间 产生定时器 事件吗 ?例如,在一小时或一天的最后一分钟的开始。
有什么方法可以让EA在 特定的时间 产生定时器 事件吗 ?例如,在一小时或一天的最后一分钟的开始。
当然。
如果不是一个秘密,它(方法)是什么样子的?
使用定时器管理器。我想写一篇文章,但后来不知怎的,我就偏离了方向。虽然它可能看起来不像一篇文章。
由于代码和事件队列的单线程性质,具体的时间是行不通的,但平均误差在一秒以内(最大限度受代码对事件的最大执行时间 限制)。
此外,只有一个定时器。
我可以吗?