MT5和速度在行动 - 页 52 1...454647484950515253545556575859...94 新评论 Roman 2020.10.09 23:55 #511 重新设计的宏观 #define µsSLEEP(µsRange) \ { \ ulong c = GetMicrosecondCount() + µsRange; \ while(GetMicrosecondCount() < c); \ } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { while(!_StopFlag) { µsSLEEP(5000000); Print("Прошло 5000000 микросекунд"); } } Andrey Khatimlianskii 2020.10.10 00:00 #512 Roman:当然,它可以做的不仅仅是一个核心。 我的意思是在没有睡觉 的时候。 很明显,滑移在这里是不合适的,因为我们需要微秒。但没有它,它也会嗡嗡作响...... Roman 2020.10.10 00:12 #513 Andrey Khatimlianskii:我的意思是在没有睡觉的时候。很明显,滑移在这里不起作用,因为我们需要微秒。但没有它,它也会哼唱。 当然,它的嗡嗡声没有滑落。GetMicrosecondCount 计数器正在运行 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ulong µs = 0; while(!_StopFlag) { µs = GetMicrosecondCount(); Comment((string)µs); ChartRedraw(); } Comment(""); } Andrey Khatimlianskii 2020.10.10 00:44 #514 Roman:当然,它是在没有打滑的情况下旋转的。 GetMicrosecondCount计数器正在运行。 不仅仅是计数器被加载。一个空的无限循环也会加载它。这就是我的意思。 糟糕的解决方案,一般来说。但我不会建议它更好。 Roman 2020.10.10 00:55 #515 Andrey Khatimlianskii:不仅仅是计数器被加载。一个空的无尽循环也会加载。这就是我的意思。总而言之,这是个糟糕的解决方案。但我不会建议它更好。 因此,一个空的循环显然会耗尽处理器时钟周期的全部潜力。 我不明白对一个糟糕的解决方案的抱怨。如果它不适合你的资源,这并不意味着它是坏的。 µsSLEEP给你的循环延迟小于标准Sleep(1);即以微秒而不是毫秒为单位。 上面例子中的5000000只是一个例子,战斗中的真实频率将小于1毫秒。 我不明白你的问题。 你 需要它没有压力吗? 把一个常规的Sleep(20);在毫秒内 Andrey Khatimlianskii 2020.10.10 02:40 #516 Roman:因此,空的同时可以理解为充分挖掘了处理器时钟周期的潜力。 我不明白对一个糟糕的解决方案的抱怨。如果它不适合你的资源,并不意味着它是坏的。 µsSLEEP给你的循环延迟小于标准Sleep(1);即以微秒而不是毫秒为单位。 上面例子中的5000000只是一个例子,战斗中的真实频率将小于1毫秒。我不明白你的问题。 你 需要它没有压力吗? 把常规的Sleep(20);在毫秒内。 没有任何投诉。 我不需要这样的计时器,我是出于兴趣而研究它。但我发现这是一个糟糕的解决方案,因为它不必要地加载了处理器。 而你需要微秒滑的目的是什么? Roman 2020.10.10 03:09 #517 Andrey Khatimlianskii:没有投诉。 我不需要这样的计时器,出于兴趣研究了它。但我觉得这个方案不好,因为它不必要地加载了处理器。你需要微秒滑的原因是什么? 如果你想知道它为什么加载,并找出原因,你就不会有这种看法。 如果你想少于1毫秒,你就得用资源来支付。 而且在我看来,你不能卸载它,因为你需要微秒计时器 来计算间隔时间。 另一方面,如果微秒计时器不断运行,并给出了等于空的负载,,那么就有一个问题,为什么这个延迟,然后把,并使用微秒 计时器。但不要紧,它是抒情的。 所以,我正在以一定的频率ping服务器,同时没有延迟。 而且我需要微秒级的采样,因为会有不必要的调用。 我正在使用第一个解决方案,我之前发布的,我也写了µsSleep,它可能会派上用场。 Roman 2020.10.10 19:37 #518 Andrey Khatimlianskii: 你需要一个微秒滑的目的是什么? 这里有一个现成的解决方案。Print(),当然你要用你自己的代码来替换它。 #define SEND_PING \ { \ ulong currCount = GetMicrosecondCount(); \ switch((currCount - prevCount) > 5000000) \ { \ case 0: \ break; \ case 1: \ prevCount = currCount; \ Print("ping"); \ break; \ } \ } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ulong prevCount = 0; while(!_StopFlag) { SEND_PING; } } fxsaber 2020.10.11 12:50 #519 Renat Fatkhullin:在我们正在编写的新测试器中,我们将尝试改变这一点。 fxsaber: 送到了PM那里。 在测试器中,这个EA以修改的形式生成了数百万条完整合理(不是垃圾邮件)的交易订单 记录。由于这个原因,测试员的日志灾难性地很快就被堵塞了。 这些日志在99%的时候是不需要的,但我们经常需要专家顾问通过打印输出的内容。因此,我想再次请你考虑是否可以在测试器中禁止自动生成每个OrderSend包的条目。 如果我理解正确的话,禁用这种字符串的生成将导致单次运行的性能提高。也就是说,其好处是双重的。 Renat Fatkhullin 2020.10.11 14:56 #520 Renat Fatkhullin: 但是AMPGlobalEU-Live(实际上最好搜索为AMPGlobalUSA-Live),MetaTrader 5的物理平台核心在芝加哥,实际上是19.53毫秒,因为我们最近的服务器在纽约。特别是手动扫描了他们所有的点--最小是19毫秒。我们将尝试在接下来的几天里把服务器放在芝加哥。还没来得及做。 在芝加哥的服务器已经部署完毕。 在24小时内,它将扫描所有服务器并开始分发。 1...454647484950515253545556575859...94 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
重新设计的宏观
当然,它可以做的不仅仅是一个核心。
我的意思是在没有睡觉 的时候。
很明显,滑移在这里是不合适的,因为我们需要微秒。但没有它,它也会嗡嗡作响......
我的意思是在没有睡觉的时候。
很明显,滑移在这里不起作用,因为我们需要微秒。但没有它,它也会哼唱。
当然,它的嗡嗡声没有滑落。
GetMicrosecondCount 计数器正在运行
当然,它是在没有打滑的情况下旋转的。
GetMicrosecondCount计数器正在运行。
不仅仅是计数器被加载。一个空的无限循环也会加载它。这就是我的意思。
糟糕的解决方案,一般来说。但我不会建议它更好。
不仅仅是计数器被加载。一个空的无尽循环也会加载。这就是我的意思。
总而言之,这是个糟糕的解决方案。但我不会建议它更好。
因此,一个空的循环显然会耗尽处理器时钟周期的全部潜力。
我不明白对一个糟糕的解决方案的抱怨。如果它不适合你的资源,这并不意味着它是坏的。
µsSLEEP给你的循环延迟小于标准Sleep(1);即以微秒而不是毫秒为单位。
上面例子中的5000000只是一个例子,战斗中的真实频率将小于1毫秒。
我不明白你的问题。
你 需要它没有压力吗?
把一个常规的Sleep(20);在毫秒内
因此,空的同时可以理解为充分挖掘了处理器时钟周期的潜力。
我不明白对一个糟糕的解决方案的抱怨。如果它不适合你的资源,并不意味着它是坏的。
µsSLEEP给你的循环延迟小于标准Sleep(1);即以微秒而不是毫秒为单位。
上面例子中的5000000只是一个例子,战斗中的真实频率将小于1毫秒。
我不明白你的问题。
你 需要它没有压力吗?
把常规的Sleep(20);在毫秒内。
没有任何投诉。
我不需要这样的计时器,我是出于兴趣而研究它。但我发现这是一个糟糕的解决方案,因为它不必要地加载了处理器。
而你需要微秒滑的目的是什么?
没有投诉。
我不需要这样的计时器,出于兴趣研究了它。但我觉得这个方案不好,因为它不必要地加载了处理器。
你需要微秒滑的原因是什么?
如果你想知道它为什么加载,并找出原因,你就不会有这种看法。
如果你想少于1毫秒,你就得用资源来支付。
而且在我看来,你不能卸载它,因为你需要微秒计时器 来计算间隔时间。
另一方面,如果微秒计时器不断运行,并给出了等于空的负载,
,那么就有一个问题,为什么这个延迟,然后把,并使用微秒 计时器。但不要紧,它是抒情的。
所以,我正在以一定的频率ping服务器,同时没有延迟。
而且我需要微秒级的采样,因为会有不必要的调用。
我正在使用第一个解决方案,我之前发布的,我也写了µsSleep,它可能会派上用场。
你需要一个微秒滑的目的是什么?
这里有一个现成的解决方案。
Print(),当然你要用你自己的代码来替换它。
送到了PM那里。
在测试器中,这个EA以修改的形式生成了数百万条完整合理(不是垃圾邮件)的交易订单 记录。由于这个原因,测试员的日志灾难性地很快就被堵塞了。
这些日志在99%的时候是不需要的,但我们经常需要专家顾问通过打印输出的内容。因此,我想再次请你考虑是否可以在测试器中禁止自动生成每个OrderSend包的条目。
如果我理解正确的话,禁用这种字符串的生成将导致单次运行的性能提高。也就是说,其好处是双重的。
但是AMPGlobalEU-Live(实际上最好搜索为AMPGlobalUSA-Live),MetaTrader 5的物理平台核心在芝加哥,实际上是19.53毫秒,因为我们最近的服务器在纽约。
特别是手动扫描了他们所有的点--最小是19毫秒。
我们将尝试在接下来的几天里把服务器放在芝加哥。还没来得及做。
在芝加哥的服务器已经部署完毕。
在24小时内,它将扫描所有服务器并开始分发。