计时器 - 页 5

 
Yedelkin:
哦,隧道尽头的光亮!你应该 在OnTimer()本身中调用EventSetTimer()?我到了终点站后一定会尝试。谢谢你的聪明解决方案!

我一直都看到这个解决方案。

我只是还没有尝试过最好的方法来

EventKillTimer()或 EventSetTimer(0);来杀死定时器

 
MetaDriver:

毫秒是非常需要的。我也加入了这个愿望。

现在在专家顾问中是很危险的。例如,当用户离开终端时,同步的MessageBox()函数 可能会迅速排队(当然,你可以说在这种函数之前可以禁用定时器)。

但如果他们做了中断处理...

Документация по MQL5: Общие функции / MessageBox
Документация по MQL5: Общие функции / MessageBox
  • www.mql5.com
Общие функции / MessageBox - Документация по MQL5
 
stringo:

现在已经不可能去到毫秒级了。

有多少已经写好的专家顾问会开始产生比作者预期多1000倍的定时器事件?

不,不...你不需要这样改变 它。你只需要添加一个新的函数EventSetTimerMS(long ms)

有必要留下旧的,只是为了兼容。(可以通过调用EventSetTimerMS(1000);来轻松模拟。)

Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
Yurich:

这在专家顾问中现在是很危险的。例如,同步的MessageBox()函数 可以在用户离开终端时快速排队(当然,你可以说在这种函数之前禁用定时器)。

如果他们做出中断处理就好了......

不要使用中断。 虽然我不知道你是什么意思,也许这是一个好的...:)

关于队列--秒也可以用,如果你去睡觉。:) 如果你不知道如何处理后果,就不要使用它,这是一个简单的配方,而且是通用的。

 
Yurich:

.........例如,同步的MessageBox()函数,可以在用户离开终端时迅速排队。(当然,你可以说在这类函数之前禁用定时器)........

我当然会。;)
 
用毫秒,你可以尝试测量刻度之间的时间,如果小于500毫秒,市场就要开始移动了。
 
stringo:

有多少已经写好的专家会开始产生比作者意图多1000倍的计时器事件?

只是一个观点:如果有非常大的可能性为那些想要的人增加毫秒,而这个障碍只存在于旧的EA中,那么为什么不引入一个新的功能呢?

   bool EventSetTimer(
                    int  seconds,            // количество секунд для OnTimer
                    bool переключатель=false // переключатель: false - период измеряется в секундах, true - в миллисекундах
                   );

让一切都变成多秒,如果开关==false,就把秒的数值乘以1000(例如,对于老的EA)。

 
Yurich:

这在专家顾问中现在是很危险的。例如,同步的MessageBox()函数 可以在用户离开终端时快速排队(当然,你可以说在这种函数之前禁用定时器)。

但如果他们做了中断处理...


OnTimer, OnTick, OnTrade...这些是中断。

 
pusheax:

OnTimer, OnTick, OnTrade...这些都是中断。

中断是指OnTick正在执行,而一个更重要的事件,如OnTimer,已经到来。OnTick被暂停,OnTimer代码被执行,然后OnTick又继续运行。
 
Yurich:
中断是指在执行OnTick的时候,一个更重要的事件,如OnTimer,已经到来。OnTick被暂停,OnTimer代码被执行,然后OnTick又继续运行。
这就是它的工作方式。