是的,还有其他选择...... 5)去分布式:
出于在外汇交易的外部量化模型中使用非代码进行快速和复杂数学的类似动机MQL4
,我开始在异构分布式处理系统的互连形式中使用这两种{ MATLAB | python | ... }
环境MetaTrader Terminal
。
MQL4
部分负责:
anAsyncFxMarketEventFLOW
加工
aZmqInteractionFRAMEWORK
设置和参与消息模式处理
anFxTradeManagementPOLICY
加工
anFxTradeDetectorPolicyREQUESTOR
将分析RQST
-s 发送到远程 AI/ML 预测器
anFxTradeEntryPolicyEXECUTOR
处理远程节点指示
{ MATLAB | python | ... }
部分负责:
aZmqInteractionFRAMEWORK
设置和参与消息模式处理
anFxTradeDetectorPolicyPROCESSOR
RQST
从远程{ MQL4 | ... }
请求者接收和处理分析-s
anFxTradeEntryPolicyREQUESTOR
{ MQL4 | other-platform | ... }
向远程市场接口节点发送交易进入请求
为什么要开始以分布式方式思考?
核心优势在于重用MATLAB
和其他 COTS 包的优势,AI/ML
而无需对仍在蔓延的MQL4
接口选项进行逆向工程(是的,在过去几年中,DLL 接口有几个来自较新更新的脏点击(字符串停止成为字符串并开始成为结构(!!!)等 - 许多人*多年的痛苦与维护中的代码库,所以有一些应该避免的难忘经历......)。
下一个优势是能够增加故障恢复能力。分布式系统可以在 (1 + N) 受保护的阴影中工作。
下一个优势是变得能够提高性能。分布式系统可以提供一个处理器池——无论是在一种{ SEQ | PAR }
操作模式下(管道进程或并行形式的进程执行)。
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
这就是说,可以保持双方的优势,并避免对已经实现的本机、高性能调谐库的任何形式的重复,而分布式操作模式也为操作方式增加了一些全新的潜在好处Expert Advisor
。
在通信框架之上的分布式系统:
MATLAB
ZeroMQ
由于 Austin CONRAD的MetaTrader Terminal
包装器(虽然它MQH
与 DLL 接口,ver 2.1.11
所需的服务就像一个魅力),所以你已经准备好在每一端使用它,所以这些各种类型的节点都准备好以任何可以设计成真正异构分布式系统的形式加入它们各自的角色。
我最近的研发使用了几个python
-side 流程实例来操作 AI/ML-predictor
,r/KBD
和r/RealTimeANALYSER
一个集中式r/LOG
服务,这些服务在许多 ++ Scalable Formal Communication Patterns 中被积极使用,PUSH/PULL
来自XREQ/XREP
多个PUB/SUB
-s 实例MetaTrader Terminal
及其各自的MQL4
-code。
MATLAB
函数可以以相同的方式重用。