MT5 环境下用 python 开发交易策略方法
在 2020 年,MT5 支持了 python 开发策略的选项。在 mql5 开发文档里,按照这页的流程
安装必要的 python 开发包,把范例代码实际走一次就可以理解这个开发流程。
python 可以用文档里提到的 3.8 版,也可以用这篇博文写时 python 最新版本 3.9。唯一需要留意的是,在安装 MetaTrader5 开发包,会顺便安装最新版的 numpy,这样会造成在执行 import MetaTrader5 立刻报 numpy.core.multiarray 的错误,解决的方式就是把顺便安装的 numpy 先卸载:
pip uninstall numpy
然后安装稍微旧版的 numpy
pip install numpy==1.19.3
这样就不会再报错。
MT5 支持 python 的原理,在执行 python 是需要同时开启 MT5,import 的 MetaTrader5 包会与 MT5 建立一个本地 socket 连接用于传输数据。其实 MT5 和自身的 backtest 复盘‘可视化’窗口也是使用类似的本地 socket 来作数据交换,这点和 MT4 与自身的 backtest 可视化窗口是集成在一起的架构不同。
使用本地 socket 方式来作为数据传输,是很常用的跨程序数据交换方式,但是 MetaQuotes 在写这样的架构,似乎是没有作 socket 断线重连机制,一旦连接断线,只能靠被接端的程序重启来重新连接 MT5,这个问题也常影响 MT5 backtest ‘可视化’窗口的连接稳定。
从 MT5 python 支持的函数里,可以看到,调用商品行情数据和下单都是支持的,但是无法支持 backtest 复盘,这对于要验证策略和优化参数,是一个大问题。
不过如果是用来作为行情的一些统计或是调用 python 有名的机器学习库 TensorFlow 来开发一些策略,使用 python 还是有帮助的。
个人提供 MT4/MT5 EA 或 指标定制编程代写服务,有兴趣可扫描下方二维码添加晓辉编程微信进行详细沟通即可。