计时器 - 页 3

 
TheXpert:

使用定时器管理器。我想写一篇文章,但后来偏离了方向。虽然这可能不足以写成一篇文章。

由于单线程代码和事件队列,你不会在特定的时间内得到它,但平均误差小于一秒钟(最大限度受代码执行 事件的最大时间 限制)。

越是这样,就越是只有一个计时器。

你需要它吗?

是的,误差的幅度几乎是难以察觉的。也许你想一下子把它上传到代码库?它将在论坛上丢失,而其他人会在那里需要它。
 
Yedelkin:
是的,这个错误几乎是难以察觉的。你为什么不马上把它放在代码库里?它将在论坛上丢失,而其他人将需要它。

还没有完全完成,我正忙于我的文件无限5的工作。我很快就会完成。

问题的关键不在于我们是否会需要它。这是唯一正常和正确的使用多个计时器的方法。

 
TheXpert:

还没有完全完成,我正忙于我的文件无限5的工作。我很快就会完成。

没关系,我们会等待。我会联系SD公司,也许他们会让第一个Timer事件 的启动有一定的延迟。
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
Yedelkin:

有什么方法可以让EA在 特定的时间 产生定时器 事件吗 ?例如,在一小时或一天的最后一分钟的开始。

有什么问题呢?运行一个正常的计时器并分析时间。如果不符合时间,就马上离开OnTimer。
 
TheXpert:

同样,这也是火鸡中睡眠功能的一个很好的替代品,同样,一秒钟也有点多。

该主题可供讨论。你怎么看?

有一个细微的差别。如果指标中的定时器没有 连接到图表上,它就不会工作。因此,即使是第二个定时器在指标中也往往是无用的。

这里有 一个解决方案,用于监测小于一秒钟的事件。也许,计时器可以和GetTickCount()结合起来做。

 
stringo:
问题是什么?你需要运行正常的计时器并分析时间。如果时间不合适--立即退出OnTimer。

如果我想每天(每小时等)但在某个时间运行一次OnTimer(),我为什么要用每秒的Timer事件轰炸队列,并把时间浪费在检查OnTimer()上?

我相信,使用这个带有两个参数的函数会更合理和优雅。

   bool EventSetTimer(
                   int seconds,      // количество секунд для OnTimer
                   int задержка=0     // количество секунд задержки запуска первого события Timer 
                   );

这就是SD的建议。

补充:延迟 参数的值可以很容易地在OnInit()中计算一次

 
Yedelkin:

以及为什么...

嗯,实际上,这就是我的建议。只是被包裹在一个方便的包装中。

一秒钟一次是一个可怕的小数目,特别是如果你跳过不必要的事件。

 
你只需要把以秒为单位的延迟转换为毫秒。
bool EventSetTimer(1000);// количество миллисекунд для 1 секунды задержки для OnTimer

和这个。

int задержка=0     // количество секунд задержки запуска первого события Timer 

根本不做,因为这只是胡说八道。

 
pusheax:

int задержка=0     // количество секунд задержки запуска первого события Timer 

根本不做,因为这只是胡说八道。

我作为一个胡说八道的专家来问。这个延迟(int delay=0)背后的想法是什么,建议它(延迟)的目的是什么?你是如何理解它的?

第二个问题我想澄清,指定" OnTimer的1秒延迟的毫秒数"的意义是什么?你想实现什么目标?例如,要在OnTimer中每秒钟延迟三毫秒?

 
TheXpert:

嗯,实际上,这就是我的建议。只是被包裹在一个方便的包装中。

每秒一次是一个可怕的小数目,特别是如果你跳过不必要的事件。

正如你所理解的那样,在这种情况下,我的座右铭是:"如果你能没有他们,就打倒所有吝啬鬼"。你唯一需要做的是允许在用户选择的时间内延迟生成终端层面的第一个定时器事件。因此,我不是在贬低你的代码的重要性,尤其是我根本没有看到它。
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5