我认识的绝大部分交易者用MT5就是打开软件,从经纪商给的品种列表里选一个,然后开始跑回测。根本没人去看市场报价里那个"自定义"的标签页。大错特错。
我自己也是吃了亏才学会这招的。几个月前有个客户发来一个策略让我帮忙优化,结果那个策略是基于一个中国股指的——他的经纪商压根不提供这个品种。没数据,没图表,测都没法测。卡住了。
后来我隐约记得在MT5帮助文件里见过"自定义金融品种"这个东西,翻出来一看,发现这玩意儿简直就是救命稻草。
自定义品种到底是什么玩意儿?
大白话讲,自定义品种就是你自己在MT5里面创建的一个金融工具。经纪商没有这个品种,是你自己定义的。你可以从外部文件导入自己的价格历史,设置交易时段,然后用它来做技术分析和策略回测。
官方MetaTrader 5帮助文档的原话是:"您可以查看这些交易品种的图表并执行技术分析,以及在策略测试中使用这些交易品种测试EA交易和指标"。这就是我当时需要的功能。
这玩意儿真正有用的地方在哪?
大部分人以为回测只能跑经纪商给的品种。但如果你的策略是基于下面这些情况呢:
自定义品种就是为这些场景准备的。官方文档里也说了:"如果您的交易商不提供您想进行策略测试的交易品种,或者提供的历史深度和价格历史质量不足,您可以创建一个自定义交易品种并为其上传所需的数据"。说得很明白了。
第一步:创建自定义品种
在MT5里创建自定义品种,先打开市场报价窗口,右键随便点一下,选"交易品种"。然后在交易品种窗口里,往下翻到最下面的"自定义"标签页,点"创建自定义交易品种"。
配置窗口里一堆选项,真正要关心的其实没几个:
.cust或者.my,免得跟经纪商的品种重名。Custom\Forex\或者Custom\Indices\下面。有个小技巧——"复制自"这个字段可以直接从已有的品种复制所有设置,省的自己一个个填交易时间和保证金参数。
第二步:导入价格数据
这才是关键步骤。品种创建好之后,切到"柱形图"标签页(导入OHLC数据)或者"报价"标签页(导入分时数据),点"导入"。
数据格式一定要对:
1分钟柱形图(最常用):
``
`
分时报价:
`
`
官方文档里提醒了几个关键点:
平台内部所有数据都以1分钟柱的形式存储——其他时间周期都是从这些柱里生成的
如果导入的数据和已有历史有重叠,新数据会完全替换那个时间段的老数据
同一分钟只能有一个柱,不能有重复时间戳
小于等于0的值会被忽略
数据必须从旧到新排序
第三步:一个没人告诉你的事
这是我差点把头发薅光才悟出来的经验。如果你要手动编辑价格历史,永远、永远先请求M1时间周期的数据。因为平台内部存的就是1分钟柱,你要是编辑了一个M5的柱,系统会在背后改掉5个1分钟柱的数据。
编辑的时候平台会给改动加上颜色标记:
绿色背景 = 修改正确的条目
红色背景 = 有错误(比如最高价比最低价还低)
灰色背景 = 已删除的条目
黄色背景 = 新增的条目
我自己经常用这个手动编辑功能来修复外部数据源里的坏数据。花几分钟修一下,回测结果能准一大截。
第四步:在策略测试器里用自定义品种
数据导好之后,在策略测试器里用自定义品种就跟用普通经纪商品种一样,下拉框里直接选就行。
一开始我没想到的是——测试器会自动处理货币换算。如果你的品种利润货币是欧元,账户货币是美元,测试器会自动用EURUSD这种交叉汇率来做换算。
但是有个坑。测试器搜索换算品种是有顺序的:
先找自定义品种(比如 AUDUSD.custom)
找不到的话,再找普通品种(比如 AUDUSD)
这个机制其实挺好用的。比如你的经纪商报价EURUSD带了个奇怪的后缀EURUSD.f,测试器不认识,那你自己创建一个EURUSD自定义品种把它映射过去就解决了。
真实案例
上个月我接了个活,要回测一个均值回归策略,标的物是某中国股指——大部分经纪商都没有。我从一个金融数据服务商那边导出了指数历史数据,按照MT5的CSV模板格式整理了一下,以CN_INDEX.cust`的名字导入,然后直接跑回测。前后花了大概20分钟。结果出来之后发现策略表现跟预想的不太一样——如果我没做这个测试,直接推荐给客户,那就麻烦了。
没有自定义品种这个功能的话,我要么用别的品种做代理(结果会有偏差),要么跟客户说"测不了"。两条路都走不通。
参考来源:MetaTrader 5帮助 – 高级用户选项:自定义金融品种(metatrader5.com),MQL5.com – MQL5指南:自定义交易品种(mql5.com)。
本文首发于FXEAR.com,原创内容,未经授权禁止转载。