如何用MT4进行数字货币策略开发与回测

31 七月 2019, 12:38
Zhaoqi Ke
0
3 515

MetaTrader 4MT4 )简介:

MetaTrader 4 这是由 MetaQuotes Software Corp 公司开发的第四代的因特网交易平台。通过 MetaTrader 4, 您可以在世界货币市场 FOREX, 股票市场和期货市场上交易。

MetaQuotes Software Corp. 成立于2000 年 ,  公司的 量化开发 平台MetaQuotes 提供使用 MQL 程序语言 (MetaQuotes Language) 为交易者开发和运行自动交易策略引入了可能性。

选择MT4 做数据回测的优势:老牌外汇软件服务商,有强大的回测引擎,跟丰富的算法库,提高了数据回测的精度跟效率,可以用于策略的开发,调参优化。

 

开发流程:

1. 交易标的数据获取与导入(使用: Python 爬虫):

以bitmex 平台为例(最好选交易量大的平台数据,深度有保证,策略不容易失效),请求 1 分钟数据,数据精度根据开发策略风格来获取,趋势 CTA 策略,用分钟级别数据即可,如果是日内高频策略,或者套利,需要 tick 级别,可以请求一秒两个数据。

数据获取需要用到的python 库: requests (从 web 端请求数据), pandas (整理数据), multiprocessing (多线程爬取数据提高效率)

将数据转成MT4 可导入的格式:可以是 txt 或者 csv 文件。

导入MT4 :

打开MT4 (不需要联网,避免数据被其他券商覆盖掉),按 F2 打开数据中心,点击导入,将 txt 的数据导入即可:

数据准备的最后一步,Kline 周期转换,目前数据中心只有 1Min 的 Kline ,需要转成各个周期的 Kline 。

这里MT4 内置了周期转换脚本 PeriodConverter 。


在一分钟kline 图表上,加载脚本,输入要转换的周期,确定即可

完成上述步骤,我们就得到bitmex 平台 XBTUSD 各个周期的 Kline 数据。

日线Kline如图:


2.  策略开发

   打开MT4 ,按 F4 召唤MetaQuotes 策略IDE 。

如图,点击新建,EA 交易。这个就是自动化交易的脚本,可以用于策略回测。

在上面,可以根据自己的需要,添加自定义模块,主要需要自定义的库有:交易时机过滤,资金管理,风险控制,日志输出,加密等,MetaQuotes Language 简称MQL4 ,是一门接近 C++ 语言的量化开发语言,有 C++ 基础的同学上手很快,

主要学习内置的函数库的使用方法,跟 Python 一样 ,功能库很多,可以节省不少时间,不过交易逻辑建议还是自己写,这样好优化,不容易出 bug 。

开发完一个简单的均线穿插策略,接下来就是做数据回测了。

2.  数据回测

打开MT4 按 CTRL + R 召唤回测界面,如图:

回测界面可以选择需要测试的标的,也就是之前导入的bitmex XBTUSD 数据。选择好需要测试的策略,测试时间段,测试的 Kline 周期,点差跟数据精度设置,还有策略的内参设置,甚至可以进行多因子策略的开发,勾选优化按钮选好需要调参的步长即可,很强大的功能,很适合进行后期的优化,但是不好拟合过度,容易使策略失效。

点击开始进行回测:

MT4 回测引擎会模拟历史行情,跑一遍策略,并且标记出进出场点位, Kline 显示速度可控,方便策略进出场点位复盘。点击净值图,可以实时显示当前的盈亏曲线。

完成回测后MT4 会自动生成一份分析报告:

在报告里边,显示了很多策略评估指标:盈亏比,胜率,交易频率。

包含回测产生的所有虚拟交易记录跟账户盈亏曲线图。如下图:

报告可以保存到本地,方便后续查看。

(end)