市场关闭 - 页 7 123456789101112 新评论 Vasiliy Pushkaryov 2018.01.23 12:30 #61 将定时器设置为半秒。情况稍有好转。好吧,让我们暂时保持这种方式。 fxsaber 2018.01.23 13:00 #62 Vasiliy Pushkaryov: 将定时器设置为半秒。情况稍有好转。好吧,让我们暂时保持这种方式。给我看看代码。 Vasiliy Pushkaryov 2018.01.23 13:14 #63 fxsaber:给我看看代码。我已经把多余的部分清理干净了。但这样的滞后往往可以被手动抓住,或者说500ms是正常的? 附加的文件: e-TestTime.mq5 6 kb Vasiliy Pushkaryov 2018.01.23 13:17 #64 Vasiliy Pushkaryov:我已经把多余的部分清理干净了。但这样的滞后往往可以被手动抓住,或者说500ms是正常的?我试过这样的设计,而不是删除标签,只是在标签存在的情况下替换文本,但我没有注意到任何区别 if(ObjectFind(idChart, nameFix) == 0) { ObjectSetString(idChart, nameFix, OBJPROP_TEXT, text); ChartRedraw(); return; } fxsaber 2018.01.23 13:23 #65 Vasiliy Pushkaryov:是否经常可以手动捕捉这样的滞后,或者500ms是正常的?这不是一个滞后。你显示OnTimer的时间,然后等待500ms。在这500ms内,时间发生了变化,但OnTimer还没有被调用。你需要同步--在 "TimerCurrent改变 "的时刻准确地设置EventSetTimer(1)。试着用这种方式进行同步bool SetTimerSync( const uint TimerMs = 1000, const uint SyncError = 50 ) { // https://www.mql5.com/ru/forum/166646/page5#comment_5796939 return((GetCurrenTime() % 1000 > 1000 - SyncError) && EventSetMillisecondTimer(TimerMs)); } void OnTimer() { static bool Sync = GetCurrenTime() * 0; // --- при максимизированном окне выводим время на график if (Sync) showHideTime(); // https://www.mql5.com/ru/forum/166646/page7#comment_6384173 else Sync = SetTimerSync(); } int OnInit() { EventSetMillisecondTimer(1); return INIT_SUCCEEDED; } 它不起作用。而且我对MT5的滞后性有不好的想法。自己看看你的脚本在做了这些改变后会有什么表现。 fxsaber 2018.01.23 14:01 #66 fxsaber:试着用这种方式进行同步 它不起作用。而且我对MT5的滞后性有不好的想法。在设定的ms数之后,OnTimer没有被调用。因此,累积误差和观察到的滞后。虫子! Vasiliy Pushkaryov 2018.01.23 14:11 #67 fxsaber:这不是一个滞后。你把OnTimer的时间输出到屏幕上,然后等待500ms。在这500毫秒内,时间发生了变化,但是OnTimer还没有被调用。你需要同步--在 "TimerCurrent改变 "的时刻准确地设置EventSetTimer(1)。试着用这种方式进行同步 它不起作用。而且我对MT5的滞后性有不好的想法。自己看看你的脚本在做了这些改变后会有什么表现。 你在OnInit的代码中有毫秒 级的计时器,在你的帖子中你写了一个普通的一秒钟的计时器。我猜你终究还是想使用EventSetTimer(1)? fxsaber 2018.01.23 14:17 #68 Vasiliy Pushkaryov: 你在OnInit的代码里有毫秒级的计时器,在你的帖子里你写的是普通的一秒级的计时器。我猜你终究还是想使用EventSetTimer(1)?第一个定时器首先被同步化,然后设置第二个定时器。 Vasiliy Pushkaryov 2018.01.23 14:24 #69 fxsaber:首先通过第一个定时器进行同步,然后设置第二个定时器。 我明白了,我明天才能检查,谢谢你的帮助。 fxsaber 2018.01.23 15:10 #70 fxsaber:在设定的ms数之后,OnTimer没有被调用。因此,累积误差和观察到的滞后。这是一个bug!图表注释中的脚本显示了这个错误input int TimerMs = 1000; const bool Init = EventSetMillisecondTimer(TimerMs); void OnTimer() { static ulong StartTime = 0; static int Count = 0; if (!StartTime) StartTime = GetMicrosecondCount(); Comment("Error " + (string)((int)(GetMicrosecondCount() - StartTime) / 1000 - TimerMs * Count) + " ms."); Count++; } 123456789101112 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
将定时器设置为半秒。情况稍有好转。好吧,让我们暂时保持这种方式。
给我看看代码。
给我看看代码。
我已经把多余的部分清理干净了。
但这样的滞后往往可以被手动抓住,或者说500ms是正常的?
我已经把多余的部分清理干净了。
但这样的滞后往往可以被手动抓住,或者说500ms是正常的?
我试过这样的设计,而不是删除标签,只是在标签存在的情况下替换文本,但我没有注意到任何区别
是否经常可以手动捕捉这样的滞后,或者500ms是正常的?
这不是一个滞后。你显示OnTimer的时间,然后等待500ms。在这500ms内,时间发生了变化,但OnTimer还没有被调用。
你需要同步--在 "TimerCurrent改变 "的时刻准确地设置EventSetTimer(1)。
试着用这种方式进行同步
它不起作用。而且我对MT5的滞后性有不好的想法。自己看看你的脚本在做了这些改变后会有什么表现。试着用这种方式进行同步
它不起作用。而且我对MT5的滞后性有不好的想法。在设定的ms数之后,OnTimer没有被调用。因此,累积误差和观察到的滞后。虫子!
这不是一个滞后。你把OnTimer的时间输出到屏幕上,然后等待500ms。在这500毫秒内,时间发生了变化,但是OnTimer还没有被调用。
你需要同步--在 "TimerCurrent改变 "的时刻准确地设置EventSetTimer(1)。
试着用这种方式进行同步
它不起作用。而且我对MT5的滞后性有不好的想法。自己看看你的脚本在做了这些改变后会有什么表现。你在OnInit的代码里有毫秒级的计时器,在你的帖子里你写的是普通的一秒级的计时器。我猜你终究还是想使用EventSetTimer(1)?
第一个定时器首先被同步化,然后设置第二个定时器。
首先通过第一个定时器进行同步,然后设置第二个定时器。
在设定的ms数之后,OnTimer没有被调用。因此,累积误差和观察到的滞后。这是一个bug!
图表注释中的脚本显示了这个错误