我从MetaTrader Terminal软件的专家顾问开始,我有很多算法可以使用它。这些算法是在MATLAB中开发的,使用其强大的内置函数(如svd、pinv、fft )。为了测试我的算法,我有一些替代方案:
MQL5编写所有算法。C++编写算法,然后由MQL5进行DLL调用。Python编写算法嵌入到C中,然后生成一个DLL。MATLAB源代码转换为C,然后生成DLL。关于这些问题:
MQL5没有内置函数,所以我必须逐个手动实现。C编写了一些算法,但花了很长时间,结果并不像MATLAB那样快)。DLL时,我会遇到很多错误,但是如果我编译为一个可执行文件,就没有错误(这将是一个很好的选择,因为将MATLAB转换为python是非常简单和快速的)。我研究了其他类似的软件,比如MetaTrader Terminal,但是我没有找到一个好的软件。
我想知道,是否有一种最简单(快速)的方式将其他语言嵌入到MQL5中,或者以某种方式替代我的问题。
谢谢。
发布于 2016-08-01 18:36:37
是的,还有其他办法.5)去分发:
对于在外汇交易的外部定量模型中使用non-MQL4代码进行快速和复杂的数学计算,我也有类似的动机,我已经开始以一种异构分布式处理系统的互联形式使用{ MATLAB | python | ... }和MetaTrader Terminal环境。
MQL4部件负责:
anAsyncFxMarketEventFLOW处理aZmqInteractionFRAMEWORK设置和参与消息模式处理anFxTradeManagementPOLICY处理anFxTradeDetectorPolicyREQUESTOR发送分析RQST-s到远程AI/ML-预测器anFxTradeEntryPolicyEXECUTOR处理{ MATLAB | python | ... }部件负责:
aZmqInteractionFRAMEWORK设置和参与消息模式处理anFxTradeDetectorPolicyPROCESSOR接收与处理分析RQST-s到远程{ MQL4 | ... } -requestoranFxTradeEntryPolicyREQUESTOR将贸易进入请求发送到远程{ MQL4 | other-platform | ... }-市场接口节点为什么要开始以分布式的方式思考呢?
的核心优势在于重新使用 of MATLAB和其他COTS AI/ML-packages,而不需要对仍在爬行的MQL4接口选项进行逆向工程(是的,在过去几年中,DLL-接口从新的更新中得到了几次不愉快的点击(字符串不再是字符串,并开始成为结构(!)等等
的下一个优势是能够添加失败恢复力.分布式系统可以在(1+N)保护的阴影中工作。
的下一个优势是能够使提高性能。分布式系统可以提供处理器池--无论是在操作的{ SEQ | PAR }-mode (流水线进程或并行形式的进程执行)中。
MATLAB节点只是连接:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MATLAB script to setup
zeromq-matlab
clear all;
if ~ispc
s1 = zmq( 'subscribe', 'ipc', 'MATLAB' ); %% using IPC transport on <localhost>
else
disp( '0MQ IPC not supported on Windows.' )
disp( 'Setup TCP transport class instead' )
disp( 'Setting up TCP') %% using TCP transport on <localhost>
s1 = zmq( 'subscribe', 'tcp', 'localhost', 5555 );
end
recv_data1 = []; %% setup RECV buffer这就是说,我们可以保持双方的优势,可以避免任何形式的重复,已经实现的本机、高性能调优的库,而分布式操作模式也为的工作方式增加了一些全新的潜在好处。
CLI )。MetaTrader Terminal内部使用的网格计算在通信框架之上的分布式系统:
MetaTrader Terminal和 Communication Framework一样,多亏了奥斯汀·康拉德的包装器(尽管MQH与ver 2.1.11 DLL接口,所需的服务就像魅力一样工作),所以您可以直接在每一边使用它,因此这些类型的节点可以将各自的角色----以任何形式加入到真正异构的分布式系统中。

我最近的研究与开发使用了几个AI/ML-predictor,r/KBD,r/RealTimeANALYSER的python-side流程实例和一个集中化的r/LOG服务,这些服务在许多PUSH/PULL + XREQ/XREP + PUB/SUB可伸缩的正式通信模式上被积极地使用,这些服务来自于它们各自的MQL4-code的几个MetaTrader Terminal-s实例。
MATLAB函数可以以同样的方式重复使用。
https://stackoverflow.com/questions/38648453
复制相似问题