我从MetaTrader Terminal
软件上的EA开始,我有很多算法可以使用它。这些算法是在MATLAB
中使用其强大的内置函数(例如,svd
、pinv
、fft
)。为了测试我的算法,我有一些替代方案:
1.在MQL5
中编写所有算法。
1.在C++
中编写算法,然后生成一个DLL
,由MQL5
调用。
1.将Python
中的算法嵌入到C
中,然后生成DLL
。
1.将MATLAB
源代码转换为C
,然后生成DLL
。
关于问题:
1.不切实际,因为MQL5
没有内置的功能,所以我将不得不手工实现一个接一个。
1.我仍然没有尝试这个,但我认为这将需要很长的时间来实现算法(我在C
中编写了一些算法,但花了很长时间,结果不像MATLAB
那样快)。
1.当编译到DLL
时,我得到了很多错误,但如果我编译到可执行文件,就没有错误(这将是一个很好的替代方案,因为将MATLAB
转换为python
非常简单和快速)。
1.我现在正在尝试,但我认为还有很多工作要做。
我研究了其他类似的软件,如MetaTrader Terminal
,但我没有找到一个好的。
我想知道,如果有一个最简单(和快速)的方法,以某种方式嵌入其他语言的MQL5
或一些替代我的问题。
谢谢.
2条答案
按热度按时间hiz5n14c1#
是的,还有其他选择...... 5)Go Distributed:
在外汇交易的外部量化模型中使用非**
MQL4
代码来实现快速和复杂的数学运算,我也有类似的动机,我已经开始以异构分布式处理系统的互连形式使用{ MATLAB | python | ... }
和MetaTrader Terminal
**环境。**
MQL4
**部分负责:anAsyncFxMarketEventFLOW
处理aZmqInteractionFRAMEWORK
设置和参与消息模式处理anFxTradeManagementPOLICY
处理anFxTradeDetectorPolicyREQUESTOR
将分析RQST
-s发送到远程AI/ML预测器anFxTradeEntryPolicyEXECUTOR
处理远程节点指示**
{ MATLAB | python | ... }
**部分负责:aZmqInteractionFRAMEWORK
设置和参与消息模式处理anFxTradeDetectorPolicyPROCESSOR
接收和处理分析RQST
-s到来自远程{ MQL4 | ... }
-请求者anFxTradeEntryPolicyREQUESTOR
发送交易进入请求到远程{ MQL4 | other-platform | ... }
-market-interfacing-node(s)为什么开始分布式思维?
核心优势在于重用
MATLAB
和其他COTSAI/ML
-软件包的优势,而不需要对仍在爬行的MQL4
接口选项进行逆向工程(是的,在过去的几年里,DLL接口有几次来自更新的脏点击(字符串不再是字符串,并开始成为结构体(!))。!!)等等--许多人多年来一直在维护代码库,所以有一些不必要的经验,应该避免.).下一个优势是能够增加故障恢复能力。分布式系统可以工作在(1 + N)受保护的阴影中。
下一个优势是能够提高性能。一个分布式系统可以提供一个处理器池-无论是在**
{ SEQ | PAR }
**-操作模式(流水线进程或并行形式的进程执行)。**
MATLAB
**节点刚刚加入:也就是说,我们可以保留每一方的优势,避免任何形式的重复已经实现的本地,高性能调优的库,而分布式操作模式也为**
Expert Advisor
**操作方式增加了一些全新的潜在好处。CLI
)MetaTrader Terminal
内部使用网格计算MetaTrader Terminal
programming models一个分布式系统,在通信框架之上:
MATLAB
has already available port ofZeroMQ
Communication Framework,与**MetaTrader Terminal
相同,这要归功于Austin CONRAD的 Package 器(尽管MQH
与ver 2.1.11
DLL接口,但所需的服务工作起来很有魅力),所以您可以直接在每一端使用它,因此这些类型的节点准备好以任何形式加入它们各自的角色,可以设计成真正的异构分布式系统**。我最近的研发使用了几个
python
端进程的示例来操作**AI/ML-predictor
、r/KBD
、r/RealTimeANALYSER
和一个集中的r/LOG
**服务,这些服务在许多PUSH/PULL
+XREQ/XREP
+PUB/SUB
可扩展的正式通信模式上被积极使用,从MetaTrader Terminal
-s的几个示例通过它们各自的MQL4
-代码。MATLAB
函数可以以相同的方式重复使用。9udxz4iz2#
MetaTrader 5支持OpenCL和DirectX。
2020年,Sergey Golubev在MQL论坛上发布了MetaTrader 5中OpenCL支持的介绍性文章大纲。与在MQL中单独实现相比,OpenCL子系统可能会提供一种计算上更优化的方法,以在MT5中实现任何相对更数学和数据密集型的技术分析方法。当然还有support for Python。
虽然我还不能直接使用它,但我相信OpenCL支持是用第二种编程语言实现的,它补充了MQL 5,主要是OpenCL的编程语言。从例子来看,它看起来与C非常相似。我相信一定有很多书,扩展了这个主题。
在MQL 5中,似乎可以使用MQL程序中的文字字符串或通过单独的源文件将OpenCL程序提供给OpenCL驱动程序子系统。
对于更复杂的图形,MetaTrader 5中还有support for DirectX以及图表对象的API。
作为一个想法,也许这些API可以用于John F. Ehlers的著作《交易者的周期分析》(Cycle Analytics for Traders),以及John F. Ehlers在MESA Software网站上。这些示例主要在TradeStation EasyLanguage 中实现。
鉴于书中和文章中的例子-与可能更常见的,通常更基于移动平均线和更直接基于价格的指标方法相比,例如Welles怀尔德的ADX -这些新的例子中的大多数可能相对数学密集,例如使用许多三角变换。给定一个使用“线条绘制”的数据密集型自相关示例,虽然它可能足够简单,可以在MQL 4中实现,但至少在一种方法中,它可能会在MQL 4中陷入终端困境,因为在
double
类型值的2x 48数组上进行简单的操作。目前,我正在努力将其作为MQL 4中更广泛代码库的一部分进行移植。希望它可以移植到MQL 5和OpenCL,在MQL语言的早期版本中至少有一种方法。对于新项目,有文档和示例可用吗?
从MQL 4移植将是一个完全不同的主题,LoL,表面上是一个很短的过程。