MetaTrader 5 Python用户组 - 如何在Metatrader中使用Python - 页 80

 
Сергей Таболин:

另一个问题来自一个新来者。

情况是这样的。我有一个指标。当我在 "冷 "模式下将其添加到图表中时,需要7-8秒的时间来计算。

我在Python中也做过同样的事情。不同的是,Python将数据写入一个.csv文件中。

我理解MT5的连接损失,其他开销....但是,8秒对3小时.....????????如何???????????

你想从一种比C++慢一百倍的语言中得到什么?

在Python中所有快速的东西都写成了C++模块。如果没有合适的快速模块,一切都会变得无限缓慢。


copy_ticks_range,以及Python API中其余的数据提取方法都是由我们在给MQL5提供数据的层面上超级有效和快速地编写的。
 
Renat Fatkhullin:

你想从一种比C++慢一百倍的语言中得到什么?

在Python中所有快速的东西都写成了C++模块。如果没有合适的快速模块,一切都会变得无限缓慢。


copy_ticks_range,以及Python API中的其他数据提取方法都是由我们在MQL5中给出这个数据的水平上编写的,超级高效和快速。

更慢,而不是以百倍的速度....

谢谢你,雷纳特,谢谢你的答复。我认为这个速度完全是由Python所决定的?我自己认为,无论是在MT中调用ticks,还是在文件中写入数据,都不可能慢到如此程度......

 

现在你明白为什么我们要在语言表现上投入这么多精力了吗?

否则就不可能处理现代的体积。

我们不支持Python本身,而是作为为其编写的高效库的桥梁(用C++编写)。

 
雷纳特,你能简要介绍一下你在新的测试器上取得了多大进展吗?

那么肯定会包括一个API功能来使用Python的测试器,不是吗?

问候语
 
Christian:

那么肯定会包括一个API功能来使用Python的测试器,不是吗?

不,认为我们会为了杀死一个测试员而自杀并选择比我们自己的语言慢一百倍的语言,这是很天真的想法。

对我们来说,将第三方C++库重新编译成MQL5模块的想法更为有利。为了做到这一点,我们已经开始在编辑器中包含一个外部LLVM编译器。

 
Renat Fatkhullin:

不,认为我们会为了杀死一个测试员而自杀并选择比我们自己的语言慢一百倍的语言,这是很天真的想法。

对我们来说,将第三方C++库重新编译成MQL5模块的想法更为有利。为了做到这一点,我们已经开始将外部的LLVM编译器纳入编辑器。

是否有希望开发出支持C/C++.lib或.a静态库链接到mql程序项目 的想法?

 
Roman:

在支持C/C++.lib或.a静态库链接到mql程序项目中,是否有希望发展这一想法?

不,你总是可以使用任何有明确访问权限控制的DLL。

 
我理解与MT5的连接损失,其他开销....但是,8秒对3小时.....????????如何???????????

给我一个你的Python代码放慢的例子,从字里行间看不出它是做什么的,你是如何得到数据的。还有,为什么它不断向文件写入?难道不能在最后进行吗?

 
Renat Fatkhullin:

不,认为我们会为了杀死一个测试员而自杀并选择比我们自己的语言慢一百倍的语言,这是很天真的想法。

对我们来说,将第三方C++库重新编译成MQL5模块的想法更为有利。为了做到这一点,我们已经开始将外部的LLVM编译器纳入编辑器。

如果,假设你采取ONNX的支持,导入的 模型会比MQL本身更慢?

 

注意到输出中的一个怪异现象。

[89, '2020.01.16', 3, 15, 3, 16, Timedelta('0 days 01:16:53.966000')]
[90, '2020.01.16', 3, 16, 3, 17, Timedelta('0 days 00:25:39.266000')]
[91, '2020.01.16', 3, 17, 4, 12, Timedelta('0 days 19:07:12.757000')]
[92, '2020.01.17', 4, 12, 4, 13, Timedelta('0 days 00:36:14')]
[93, '2020.01.17', 4, 13, 4, 15, Timedelta('0 days 02:21:01.630000')]
[94, '2020.01.17', 4, 15, 4, 17, Timedelta('0 days 02:12:28.692000')]
[95, '2020.01.17', 4, 17, 0, 11, Timedelta('0 days 17:30:16.404000')]

是不是 == 00:36:14.000000 ?