matlab 替代MQL5

ltqd579y  于 7个月前  发布在  Matlab
关注(0)|答案(2)|浏览(69)

我从MetaTrader Terminal软件上的EA开始,我有很多算法可以使用它。这些算法是在MATLAB中使用其强大的内置函数(例如,svdpinvfft)。为了测试我的算法,我有一些替代方案:
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或一些替代我的问题。
谢谢.

hiz5n14c

hiz5n14c1#

是的,还有其他选择...... 5)Go Distributed:

在外汇交易的外部量化模型中使用非**MQL4代码来实现快速和复杂的数学运算,我也有类似的动机,我已经开始以异构分布式处理系统的互连形式使用{ MATLAB | python | ... }MetaTrader Terminal**环境。

**MQL4**部分负责:

  1. anAsyncFxMarketEventFLOW处理
  2. aZmqInteractionFRAMEWORK设置和参与消息模式处理
  3. anFxTradeManagementPOLICY处理
  4. anFxTradeDetectorPolicyREQUESTOR将分析RQST-s发送到远程AI/ML预测器
  5. anFxTradeEntryPolicyEXECUTOR处理远程节点指示

**{ MATLAB | python | ... }**部分负责:

  1. aZmqInteractionFRAMEWORK设置和参与消息模式处理
  2. anFxTradeDetectorPolicyPROCESSOR接收和处理分析RQST-s到来自远程{ MQL4 | ... }-请求者
  3. anFxTradeEntryPolicyREQUESTOR发送交易进入请求到远程{ MQL4 | other-platform | ... }-market-interfacing-node(s)

为什么开始分布式思维?

核心优势在于重用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 has already available port of ZeroMQ Communication Framework,与**MetaTrader Terminal相同,这要归功于Austin CONRAD的 Package 器(尽管MQHver 2.1.11 DLL接口,但所需的服务工作起来很有魅力),所以您可以直接在每一端使用它,因此这些类型的节点准备好以任何形式加入它们各自的角色,可以设计成真正的异构分布式系统**。

我最近的研发使用了几个python端进程的示例来操作**AI/ML-predictorr/KBDr/RealTimeANALYSER和一个集中的r/LOG**服务,这些服务在许多PUSH/PULL + XREQ/XREP + PUB/SUB可扩展的正式通信模式上被积极使用,从MetaTrader Terminal-s的几个示例通过它们各自的MQL4-代码。
MATLAB函数可以以相同的方式重复使用。

9udxz4iz

9udxz4iz2#

MetaTrader 5支持OpenCLDirectX
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,表面上是一个很短的过程。

相关问题