自定义符号。误差、错误、问题、建议。 - 页 25 1...181920212223242526272829303132...34 新评论 Roman 2020.02.18 09:20 #241 jaffer wilson: 这在我这边不起作用。 这些是我的MT5版本的详细信息。 尝试改变系统时间错误。 //+------------------------------------------------------------------+ //| SpeedupSystemTimer.mq5 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property description "Уменьшает погрешность системного таймера до 1 ms" #import "winmm.dll" int timeBeginPeriod(uint per); #import //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ void OnInit() { timeBeginPeriod(1); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { ExpertRemove(); } //+------------------------------------------------------------------+ jaffer wilson 2020.02.18 11:52 #242 Roman : 尝试改变系统时间错误。 我已经试过了。请检查该文件。还有视频。你会发现的。甚至我要求版主看一下所附的文件。 同样的事情也发生在自定义字符 上。 附加的文件: timer_issue.zip 1465 kb Time_Left_Timer_Based.mq5 9 kb Roman 2020.02.18 13:31 #243 jaffer wilson:我试过了。请检查该文件。还有视频。你会发现的。甚至我要求版主看一下所附的文件。同样的事情也发生在自定义字符上。 在文档中阅读关于TimeCurrent()的内容 jaffer wilson 2020.02.18 13:50 #244 Roman : 在文档中阅读关于TimeCurrent()的内容 我假设你还没有运行这个文件。拜托,你可以在你那边运行一次。我的程序使用TimeCurrent()来获得当前时间,当秒数变成0或更少时。这将调用SetTime()函数。 然后,如果剩余时间是50秒,那么它就不会检查TimeCurrent(),它会减少秒数。我认为这应该在调用OnTimer()时可见。但这是不可见的。请检查一次。 Roman 2020.02.18 14:32 #245 jaffer wilson: 我假设你没有运行该文件。拜托,你可以在你那边运行一次。我的程序使用TimeCurrent()来获得当前时间,当秒数变成0或更少时。这将调用SetTime()函数。 然后,如果剩余时间是50秒,那么它就不会检查TimeCurrent(),它会减少秒数。我认为这应该在调用OnTimer()时可见。但这是不可见的。请检查一次。 我已经运行了你的文件,但你代码中的处理程序已经被优先处理了。 考虑到TimeCurrent()的具体情况,这两个指标的工作原理几乎相同 已添加。 我最好提请开发者注意本帖中的 OnTimer()延迟。 附加的文件: Time_Left_Timer_Based.mq5 10 kb b-clock.mq5 9 kb Slava 2020.02.18 15:33 #246 Roman: 我更想提请开发者注意本帖中 的OnTimer()延迟。 不保证定时器精确到毫秒。而且由于硬件的限制,将无法保证。 Nikolai Semko 2020.02.18 16:18 #247 Roman: 我更想提请开发者注意本帖中 的OnTimer()延迟。 16毫秒是任何带有毫秒的东西的精确度。这个问题已经在某个地方讨论过了。 用微秒来计算,精度还可以,但速度就慢了。 Roman 2020.02.18 16:47 #248 Nikolai Semko: 16毫秒是任何带有毫秒的东西的精确度。这个问题已经在某个地方讨论过了。 用微秒来计算,精度是可以的,但速度就慢了。 很明显,系统的精确度是~16毫秒。 在这个例子中,它被设置为高于16,EventSetMillisecondTimer(20)。 这就是OnTimer()处理程序,以20毫秒的增量运行。 但在评论中显示的计数器似乎挂了几毫秒。 我不知道为什么--要么是处理程序OnTimer()变慢,要么是图表事件处理 队列变慢。 Nikolai Semko 2020.02.18 16:55 #249 Roman: 很明显,系统的精确度是~16毫秒。 在这个例子中,它被设置为高于16,EventSetMillisecondTimer(20)。 这就是OnTimer()处理程序,以20毫秒的增量运行。 但在评论中显示的计数器似乎挂了几毫秒。 我不知道为什么--要么是处理程序OnTimer()变慢,要么是图表事件处理 队列变慢。 发现 关于交易、自动交易系统和交易策略测试的论坛 如何创建一个函数来处理每一毫秒? Nikolai Semko, 2018.09.13 04:45 是的,事情就是这样的。(仅仅不是频率,而是周期。 最大频率=64赫兹) 只是要补充说明一下。 计时器的周期步骤=15.625毫秒。 即用EventSetMillisecondTimer(1)命令和EventSetMillisecondTimer(10)命令,实际周期为15.625ms。 使用EventSetMillisecondTimer(21)命令时,实际周期为31.25ms,使用EventSetMillisecondTimer(30)命令时,实际周期为31.25ms。 通过EventSetMillisecondTimer(95)命令和EventSetMillisecondTimer(105)命令,实际周期为109.375 ms。 等。 GetTickCount()每1/(2^6)=1/64秒(15625微秒)变化一次。 Roman 2020.02.18 17:14 #250 Nikolai Semko:发现GetTickCount()值每1/(2^6)=1/64秒(15625微秒)变化一次。 谢谢,现在我知道原因是什么了。系统定时器 步进变化,仍然是15.625的倍数 已添加。 但我改变了系统定时器的周期win api函数timeBeginPeriod(1),即在想法中,系统定时器现在被递增到1毫秒。 而系统定时器的步骤应该是1毫秒,对吗? 为什么评论中的计数器仍然冻结? 1...181920212223242526272829303132...34 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这在我这边不起作用。
这些是我的MT5版本的详细信息。
尝试改变系统时间错误。
尝试改变系统时间错误。
我已经试过了。请检查该文件。还有视频。你会发现的。甚至我要求版主看一下所附的文件。
同样的事情也发生在自定义字符 上。
我试过了。请检查该文件。还有视频。你会发现的。甚至我要求版主看一下所附的文件。
同样的事情也发生在自定义字符上。
在文档中阅读关于TimeCurrent()的内容
在文档中阅读关于TimeCurrent()的内容
我假设你还没有运行这个文件。拜托,你可以在你那边运行一次。我的程序使用TimeCurrent()来获得当前时间,当秒数变成0或更少时。这将调用SetTime()函数。
然后,如果剩余时间是50秒,那么它就不会检查TimeCurrent(),它会减少秒数。我认为这应该在调用OnTimer()时可见。但这是不可见的。请检查一次。
我假设你没有运行该文件。拜托,你可以在你那边运行一次。我的程序使用TimeCurrent()来获得当前时间,当秒数变成0或更少时。这将调用SetTime()函数。
然后,如果剩余时间是50秒,那么它就不会检查TimeCurrent(),它会减少秒数。我认为这应该在调用OnTimer()时可见。但这是不可见的。请检查一次。
我已经运行了你的文件,但你代码中的处理程序已经被优先处理了。
考虑到TimeCurrent()的具体情况,这两个指标的工作原理几乎相同
已添加。
我最好提请开发者注意本帖中的 OnTimer()延迟。
我更想提请开发者注意本帖中 的OnTimer()延迟。
我更想提请开发者注意本帖中 的OnTimer()延迟。
16毫秒是任何带有毫秒的东西的精确度。这个问题已经在某个地方讨论过了。
很明显,系统的精确度是~16毫秒。
在这个例子中,它被设置为高于16,EventSetMillisecondTimer(20)。
这就是OnTimer()处理程序,以20毫秒的增量运行。
但在评论中显示的计数器似乎挂了几毫秒。
我不知道为什么--要么是处理程序OnTimer()变慢,要么是图表事件处理 队列变慢。
很明显,系统的精确度是~16毫秒。
在这个例子中,它被设置为高于16,EventSetMillisecondTimer(20)。
这就是OnTimer()处理程序,以20毫秒的增量运行。
但在评论中显示的计数器似乎挂了几毫秒。
我不知道为什么--要么是处理程序OnTimer()变慢,要么是图表事件处理 队列变慢。
发现
关于交易、自动交易系统和交易策略测试的论坛
如何创建一个函数来处理每一毫秒?
Nikolai Semko, 2018.09.13 04:45
是的,事情就是这样的。(仅仅不是频率,而是周期。 最大频率=64赫兹)
只是要补充说明一下。
计时器的周期步骤=15.625毫秒。
即用EventSetMillisecondTimer(1)命令和EventSetMillisecondTimer(10)命令,实际周期为15.625ms。
使用EventSetMillisecondTimer(21)命令时,实际周期为31.25ms,使用EventSetMillisecondTimer(30)命令时,实际周期为31.25ms。
通过EventSetMillisecondTimer(95)命令和EventSetMillisecondTimer(105)命令,实际周期为109.375 ms。
等。
发现
谢谢,现在我知道原因是什么了。
已添加。系统定时器 步进变化,仍然是15.625的倍数
但我改变了系统定时器的周期win api函数timeBeginPeriod(1)
,即在想法中,系统定时器现在被递增到1毫秒。
而系统定时器的步骤应该是1毫秒,对吗?
为什么评论中的计数器仍然冻结?