文章 "MQL5 中的统计分布 - 取最佳的 R" - 页 5 123456789101112...20 新评论 fxsaber 2016.10.10 21:45 #41 Renat Fatkhullin:源代码中存在 MQL5 库,您可以将其代码直接内联到调用位置,最大限度地利用被调用位置的 const 环境。许多标准函数是否也会包含在库中供内联? Реter Konow 2016.10.10 21:46 #42 Renat Fatkhullin:这并不严重。在 Wyne 下,甚至是 32 位。32 位 MT5 使用的是类似 MT4 的旧编译器。它比 64 位代码慢几十倍,而 64 位代码是由专门用于 64 位 MT5 版本的新编译器创建的。我们发布了一份报告,比较 32 位和 64 位 MQL5 程序的速度。每个 MQL5 程序实际上包含两份编译代码:32 位用于旧系统以保证兼容性,64 位用于新系统。我们已经完全放弃了 32 位编译器的开发,因为它没有意义,也没有未来。因此,如果您想获得最高性能,只能使用 64 位版本的 MetaTrader 5。顺便告诉那些使用 MT4 的用户--MQL4 代码的执行速度也比 64 位 MetaTrader 5 慢几十倍。 出乎意料的是......对我来说,这是最终重新考虑我的习惯并切换到 MT5 的真正重要原因。在此之前,我认为它....。 Renat Fatkhullin 2016.10.10 21:49 #43 fxsaber:许多标准函数也会被放入库中进行内联吗?没错。在接下来的几个版本中,我们就会实现这一点。我们将在编译过程中即时为程序添加函数源,这样优化器就能充分发挥其潜力。尽量减少调用平台内核的次数对我们来说至关重要。 Renat Fatkhullin 2016.10.10 21:51 #44 Реter Konow: 出乎意料......对我来说,这确实是我最终重新考虑自己的习惯并转用 MT5 的一个重要原因。在此之前,我认为它....。如果您深入研究 MT4 和 MT5 内部流程(包括交易)的延迟,您就会远离 MT4。在流程的质量和整洁度方面存在着深渊。我们对 MT5 性能和优化如此狂热是有原因的。这是一个巨大的技术优势。 Maxim Kuznetsov 2016.10.10 21:52 #45 Renat Fatkhullin:R 用的是多次启动的最短时间,而不是第一次启动的最长时间。因此,"冷启动 "在这里并不能解释问题。即使在所有库代码都在 DLL 中的情况下。实际上没有什么需要预热的。但可以解释的是由于使用纯类型的 双倍数据,在动态对象上不存在 R 中的开销MQL5 中的编译器效率极高。看一下编译出来的 asm 代码真的很吓人。源代码中存在 MQL5 库,这允许您在调用处直接内联它们的代码,并最大限度地使用被调用处的 const 环境。 与动态链接库中未经优化的实现相比,编译器在这方面有很大的空间,因为动态链接库没有机会了解环境并进行调整。 这让我想起了 C++ 与 Lisp holivars 的对比--两者是一一对应的,只不过其中一个 "比较者 "几乎是 ++,而另一个是 Schema :-))它们只是根本不同的东西.... Реter Konow 2016.10.10 21:58 #46 Renat Fatkhullin:如果深入研究 MT4 和 MT5 内部流程(包括交易)的延迟,您就会远离 MT4。在流程的质量和整洁度方面存在着深渊。我们对 MT5 性能和优化如此狂热是有原因的。这是一个巨大的技术优势。 现在我知道了。当然,即使有足够的语言兼容性,移植所有代码也并非易事,但我相信结果是值得的。我一直致力于提高效率,性能和速度差异问题一直是我非常感兴趣的问题。如果我能更早地了解这种差异,我早就会忘记速度较慢的平台了。感谢您提供的信息。 Renat Fatkhullin 2016.10.10 21:58 #47 Maxim Kuznetsov: 这让我想起了 C++ 和 Lisp 的 holivars,两者如出一辙,只不过一个 "比较 "的是几乎 ++,而另一个则是过度生长的 Schema :-)它们只是本质上的不同.....。这只是在实践中和理论上证明了一些交易者在主题https://www.mql5.com/ru/forum/96176/page10 中表达的立场的谬误(在某处提到过):在 R 中,所有库都经过优化,速度尽可能快R 中有许多优化,包括英特尔线程构建模块等。 事实证明并非如此。在最简单的函数中,事实证明这是一种消耗,MQL5 的效率更高。此外,我还从理论上证实了它更快的原因。除了实际结果之外。 Используете ли вы CExpert при создании роботов? www.mql5.com Да Нет, пишу класс робота с нуля Нет, у меня есть свой базовый класс робота Нет, я не использую ООП Хочу посмотреть результат... fxsaber 2016.10.10 22:06 #48 Renat Fatkhullin:如果深入研究 MT4 和 MT5 内部流程(包括交易)的延迟,您就会远离 MT4。在流程的质量和整洁度方面,MT4 是一个深渊。 交易在某种程度上被遗忘交易、自动交易系统和交易策略测试论坛错误、错误、问题fxsaber, 2016.10.09 09:39 pmMT5-OrderSend 并非完全同步 - 与交易环境不同步。这意味着历史读数与实际情况不符。任何超时都是不可能的。这个问题没有可靠的解决方案,因为同步问题必须在终端层面而不是服务器层面解决。事实上,MT5 用户面临着 MT4 桥接开发人员所面临的问题。如果发送了订单发送(OrderSend),就应该记住(这是一个潜在漏洞)已经发送。然后忽略当前的历史记录(交易环境),直到相应的信息到达 OnTrade。一旦到达,就不需要 "忘记"。如果没有 FORGOTTEN 数据,您就可以信任历史记录,就像在 MT4 中一样。 MT4 订单发送完全同步。是的,剩下的问题就简单多了。 关于交易、自动交易系统和测试交易策略的论坛。 错误、错误、问题 A100, 2016.10.09 23:09 我不能因为你自己指出的原因https://www.mql5.com/ru/forum/1111/page1743#comment_2877482。 Renat Fatkhullin 2016.10.10 22:13 #49 fxsaber:不知何故,交易被遗忘了您将异步进程与希望看到同步混为一谈了。OrderSend 的任务是尽快发出请求并得到确认。系统可以完美地完成这项任务。但是,获得已完成的交易/交易,将其记入历史记录,然后根据您的要求将其提供给您--这是另一个流程,它无权拖慢订单发送的工作。这就是一切正常的原因--您迅速执行交易,然后在一毫秒内(实际上更早)在邻近的数据包中获得票据更新并进行处理。至于其他简单得多的部分,事实证明也存在问题编写一个编译器,尤其是实现邪恶的 C++ 模板是很简单的事情????。无论如何,非常感谢 A100 的耐心--他在捕捉 bug 方面提供了很大帮助。 但这已经偏离了主题,如果您想讨论这些问题,请在本地主题中进行。这里是关于 R 的。 Vladimir Karputov 2016.10.10 22:27 #50 与本主题无关的评论已移至"如何在 MT5 中正确使用订单发送功能"。 123456789101112...20 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
许多标准函数是否也会包含在库中供内联?
这并不严重。
在 Wyne 下,甚至是 32 位。32 位 MT5 使用的是类似 MT4 的旧编译器。它比 64 位代码慢几十倍,而 64 位代码是由专门用于 64 位 MT5 版本的新编译器创建的。我们发布了一份报告,比较 32 位和 64 位 MQL5 程序的速度。
每个 MQL5 程序实际上包含两份编译代码:32 位用于旧系统以保证兼容性,64 位用于新系统。
我们已经完全放弃了 32 位编译器的开发,因为它没有意义,也没有未来。
因此,如果您想获得最高性能,只能使用 64 位版本的 MetaTrader 5。
顺便告诉那些使用 MT4 的用户--MQL4 代码的执行速度也比 64 位 MetaTrader 5 慢几十倍。
许多标准函数也会被放入库中进行内联吗?
没错。
在接下来的几个版本中,我们就会实现这一点。我们将在编译过程中即时为程序添加函数源,这样优化器就能充分发挥其潜力。
尽量减少调用平台内核的次数对我们来说至关重要。
出乎意料......对我来说,这确实是我最终重新考虑自己的习惯并转用 MT5 的一个重要原因。在此之前,我认为它....。
如果您深入研究 MT4 和 MT5 内部流程(包括交易)的延迟,您就会远离 MT4。在流程的质量和整洁度方面存在着深渊。
我们对 MT5 性能和优化如此狂热是有原因的。这是一个巨大的技术优势。
R 用的是多次启动的最短时间,而不是第一次启动的最长时间。
因此,"冷启动 "在这里并不能解释问题。即使在所有库代码都在 DLL 中的情况下。实际上没有什么需要预热的。
但可以解释的是
与动态链接库中未经优化的实现相比,编译器在这方面有很大的空间,因为动态链接库没有机会了解环境并进行调整。
如果深入研究 MT4 和 MT5 内部流程(包括交易)的延迟,您就会远离 MT4。在流程的质量和整洁度方面存在着深渊。
我们对 MT5 性能和优化如此狂热是有原因的。这是一个巨大的技术优势。
这让我想起了 C++ 和 Lisp 的 holivars,两者如出一辙,只不过一个 "比较 "的是几乎 ++,而另一个则是过度生长的 Schema :-)它们只是本质上的不同.....。
这只是在实践中和理论上证明了一些交易者在主题https://www.mql5.com/ru/forum/96176/page10 中表达的立场的谬误(在某处提到过):
事实证明并非如此。在最简单的函数中,事实证明这是一种消耗,MQL5 的效率更高。此外,我还从理论上证实了它更快的原因。除了实际结果之外。
如果深入研究 MT4 和 MT5 内部流程(包括交易)的延迟,您就会远离 MT4。在流程的质量和整洁度方面,MT4 是一个深渊。
交易、自动交易系统和交易策略测试论坛
错误、错误、问题
fxsaber, 2016.10.09 09:39 pm
MT5-OrderSend 并非完全同步 - 与交易环境不同步。这意味着历史读数与实际情况不符。
任何超时都是不可能的。这个问题没有可靠的解决方案,因为同步问题必须在终端层面而不是服务器层面解决。
事实上,MT5 用户面临着 MT4 桥接开发人员所面临的问题。
如果发送了订单发送(OrderSend),就应该记住(这是一个潜在漏洞)已经发送。然后忽略当前的历史记录(交易环境),直到相应的信息到达 OnTrade。一旦到达,就不需要 "忘记"。
如果没有 FORGOTTEN 数据,您就可以信任历史记录,就像在 MT4 中一样。
MT4 订单发送完全同步。是的,剩下的问题就简单多了。
关于交易、自动交易系统和测试交易策略的论坛。
错误、错误、问题
A100, 2016.10.09 23:09
我不能因为你自己指出的原因https://www.mql5.com/ru/forum/1111/page1743#comment_2877482。
不知何故,交易被遗忘了
您将异步进程与希望看到同步混为一谈了。
OrderSend 的任务是尽快发出请求并得到确认。系统可以完美地完成这项任务。
但是,获得已完成的交易/交易,将其记入历史记录,然后根据您的要求将其提供给您--这是另一个流程,它无权拖慢订单发送的工作。
这就是一切正常的原因--您迅速执行交易,然后在一毫秒内(实际上更早)在邻近的数据包中获得票据更新并进行处理。
至于其他简单得多的部分,事实证明也存在问题
编写一个编译器,尤其是实现邪恶的 C++ 模板是很简单的事情????。
无论如何,非常感谢 A100 的耐心--他在捕捉 bug 方面提供了很大帮助。
但这已经偏离了主题,如果您想讨论这些问题,请在本地主题中进行。这里是关于 R 的。