mql5语言的特点、微妙之处以及技巧 - 页 100 1...93949596979899100101102103104105106107...247 新评论 fxsaber 2018.09.20 14:32 #991 Sleep(0);这样的滑动可能需要几十毫秒的时间来完成。 Fast235 2018.09.20 14:45 #992 fxsaber: 这样的滑移可以运行几十毫秒。它是什么意思? 我记得很久以前,在并行进程中提到了Sleep()。 fxsaber 2018.09.20 14:54 #993 快528。那是什么意思?正是他所说的。 Nikolai Semko 2018.09.20 14:59 #994 fxsaber:这样的滑移可以运行几十毫秒。不是几十,而是15.625毫秒。 我长期以来一直在使用该建筑。 if(pause>0) Sleep(pause); fxsaber 2018.09.20 15:04 #995 尼古拉-森科。不是几十,而是15.625毫秒。 我已经使用这个设计很长时间了。 ulong GetSleepTime( const int Pause = 0 ) { const ulong StartTime = GetMicrosecondCount(); Sleep(Pause); return(GetMicrosecondCount() - StartTime); } void OnStart() { ulong MaxTime = 0; while (!IsStopped()) { const ulong SleepTime = GetSleepTime(); if (SleepTime > MaxTime) { Print(SleepTime); MaxTime = SleepTime; } } } 结果 2542 9983 10033 10041 10148 10348 11982 26116 27529 40066 49915 56319 Slava 2018.09.20 15:40 #996 fxsaber: 结果 计算平均时间。 累积SleepTime,然后除以循环结束后的迭代次数。 否则,你刚刚呈现的结果在不成熟的头脑中看起来很可怕。同时显示最短的时间。 PS。MQL5中的Sleep()函数 不是重定向到win api函数::Sleep()。或者说,如果数值低于100,就是一个重定向。但在100以上,它是一个循环,里面有win api slip,所以它可以被IsStopped打断。 还有一个更微妙的问题。如果毫秒数<=0,我们就预加1。也就是说,我们从不调用::Sleep(0)。 PPS从kernel32.dll中导入Sleep函数并做同样的实验 fxsaber 2018.09.20 15:54 #997 斯拉瓦。计算平均时间。 累积SleepTime,并在循环完成后除以迭代次数。我不是在说平均时间,而是在说有可能出现峰值。我在等待交易历史与OrderSend结果同步的时候遇到了它们。我在用Sleep(0)等待。事实证明这是不可能的。 斯拉瓦。PS。MQL5中的Sleep()函数 不是重定向到win api函数::Sleep()。那么,如果数值低于100,就是重定向。但在100以上,它是一个循环,里面有win api slip,所以它可以被IsStopped打断。 还有一个更微妙的问题。如果毫秒数<=0,我们就预加1。也就是说,我们从不调用::Sleep(0)。谢谢你提供的细节。我不知道Sleep(5000)可以通过IsStopped()来终止。 Slava 2018.09.20 15:59 #998 fxsaber:这不是指平均时间,而是指出现峰值的可能性。我在等待交易历史与OrderSend结果同步的过程中遇到了这些问题。我在用Sleep(0)等待。事实证明,不能这样做。 因此,Windows操作系统从来都不是一个实时系统 Slava 2018.09.20 16:01 #999 fxsaber: 谢谢你提供的细节。不知道Sleep(5000)可以通过IsStopped()来终止。https://www.mql5.com/ru/docs/common/sleep 该函数有一个内置的检查EA的停止标志的状态,每0.1秒一次。 Документация по MQL5: Общие функции / Sleep www.mql5.com Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить. В функцию встроена проверка состояния флага остановки эксперта каждую 0.1 секунды. fxsaber 2018.09.20 16:09 #1000 斯拉瓦。 因此,Windows操作系统从来都不是一个实时系统老实说,我甚至不知道它是什么意思,也不知道在MQL5中哪里可以遇到它。 1...93949596979899100101102103104105106107...247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这样的滑动可能需要几十毫秒的时间来完成。
这样的滑移可以运行几十毫秒。
它是什么意思?
我记得很久以前,在并行进程中提到了Sleep()。
那是什么意思?
正是他所说的。
这样的滑移可以运行几十毫秒。
不是几十,而是15.625毫秒。
我长期以来一直在使用该建筑。
不是几十,而是15.625毫秒。
我已经使用这个设计很长时间了。
结果
结果
计算平均时间。
累积SleepTime,然后除以循环结束后的迭代次数。
否则,你刚刚呈现的结果在不成熟的头脑中看起来很可怕。同时显示最短的时间。
PS。MQL5中的Sleep()函数 不是重定向到win api函数::Sleep()。或者说,如果数值低于100,就是一个重定向。但在100以上,它是一个循环,里面有win api slip,所以它可以被IsStopped打断。
还有一个更微妙的问题。如果毫秒数<=0,我们就预加1。也就是说,我们从不调用::Sleep(0)。
PPS从kernel32.dll中导入Sleep函数并做同样的实验
计算平均时间。
累积SleepTime,并在循环完成后除以迭代次数。
我不是在说平均时间,而是在说有可能出现峰值。我在等待交易历史与OrderSend结果同步的时候遇到了它们。我在用Sleep(0)等待。事实证明这是不可能的。
PS。MQL5中的Sleep()函数 不是重定向到win api函数::Sleep()。那么,如果数值低于100,就是重定向。但在100以上,它是一个循环,里面有win api slip,所以它可以被IsStopped打断。
还有一个更微妙的问题。如果毫秒数<=0,我们就预加1。也就是说,我们从不调用::Sleep(0)。
谢谢你提供的细节。我不知道Sleep(5000)可以通过IsStopped()来终止。
这不是指平均时间,而是指出现峰值的可能性。我在等待交易历史与OrderSend结果同步的过程中遇到了这些问题。我在用Sleep(0)等待。事实证明,不能这样做。
fxsaber:
谢谢你提供的细节。不知道Sleep(5000)可以通过IsStopped()来终止。
https://www.mql5.com/ru/docs/common/sleep
该函数有一个内置的检查EA的停止标志的状态,每0.1秒一次。
因此,Windows操作系统从来都不是一个实时系统
老实说,我甚至不知道它是什么意思,也不知道在MQL5中哪里可以遇到它。