有个朋友前两天问我,他在MT5里想同时回测欧美和镑美,验证两个品种在1小时图上的联动性,结果策略测试器里一次只能选一个品种,问我是不是得开两个终端分别跑?这个问题其实挺典型的,估计不少做多品种相关性的朋友都卡在这一步。
先说原因。MT5自带的策略测试器默认是单品种模式,你点开品种下拉框,确实只能勾一个。但这不代表不能做多品种回测,关键在“自定义品种”这个冷门入口。我当初也是翻了好久才摸到门道。
具体做法是这样:
再说个我踩过的坑。有次我想验证黄金和欧美在避险情绪下的负相关性,按上面步骤建了自定义品种,结果回测时EA一直报错“无法获取品种属性”。查了半天发现是自定义品种的“交易”标签页里,点差和合约规格没填。MT5不会自动继承原品种的参数,你得手动把黄金的点差设成30点、合约大小100这些填进去,不然测试器直接拒绝运行。
最后给个实测数据参考。我用这套方法跑2023年1月到2024年6月的1小时数据,欧美和镑美的滚动20期相关系数均值在0.68左右,欧美和黄金在-0.21附近。这个结果对做对冲网格或者相关性EA的朋友应该有点用。不过要提醒一句,历史相关性不代表未来,回测里看着稳,实盘遇到央行决议这种事件,两个品种瞬间脱钩也是常有的事。
你们平时用MT5测试器做多品种回测时,是习惯用自定义品种还是干脆开两个终端?有没有遇到过数据对齐之外的坑?
补充一句,自定义品种的K线要用脚本或复制粘贴手动合成,别指望MT5自动帮你拼,另外回测时点差和隔夜利息不会自动继承原品种,得自己设。
先说原因。MT5自带的策略测试器默认是单品种模式,你点开品种下拉框,确实只能勾一个。但这不代表不能做多品种回测,关键在“自定义品种”这个冷门入口。我当初也是翻了好久才摸到门道。
具体做法是这样:
- 第一步,先到“市场报价”里把你要的品种数据下载全,比如EURUSD和GBPUSD的1小时历史。注意“最大柱形数”要拉到最大,不然后面回测到一半数据就断了,我头几次就吃过这个亏。
- 第二步,打开策略测试器,不要直接选EURUSD。先去工具栏找到“品种”管理器,新建一个自定义品种,起名比如“EURGBP_SYN”,然后把两个原始品种的报价导入进去。这一步的坑是导入时时间戳必须对齐,欧美和镑美虽然都是5×24,但某些经纪商周日开盘时间差几分钟,不对齐的话相关性计算会漂。
- 第三步,在EA里用SymbolInfoDouble和CopyClose分别读取两个品种的收盘价序列,再用iCorrelation或者自己写皮尔逊相关系数。这里注意MT5的iCorrelation参数里有个“应用价格”选项,最好选PRICE_CLOSE,别选典型价,不然后回测结果和实盘盘感对不上。
- 第四步,跑回测的时候把“延迟”设为0,模型选“每笔订单”。我试过用“仅开盘价”模型,跑出来的相关系数波动大得离谱,后来换成每笔订单才稳定在0.65到0.72之间。
再说个我踩过的坑。有次我想验证黄金和欧美在避险情绪下的负相关性,按上面步骤建了自定义品种,结果回测时EA一直报错“无法获取品种属性”。查了半天发现是自定义品种的“交易”标签页里,点差和合约规格没填。MT5不会自动继承原品种的参数,你得手动把黄金的点差设成30点、合约大小100这些填进去,不然测试器直接拒绝运行。
最后给个实测数据参考。我用这套方法跑2023年1月到2024年6月的1小时数据,欧美和镑美的滚动20期相关系数均值在0.68左右,欧美和黄金在-0.21附近。这个结果对做对冲网格或者相关性EA的朋友应该有点用。不过要提醒一句,历史相关性不代表未来,回测里看着稳,实盘遇到央行决议这种事件,两个品种瞬间脱钩也是常有的事。
你们平时用MT5测试器做多品种回测时,是习惯用自定义品种还是干脆开两个终端?有没有遇到过数据对齐之外的坑?
补充一句,自定义品种的K线要用脚本或复制粘贴手动合成,别指望MT5自动帮你拼,另外回测时点差和隔夜利息不会自动继承原品种,得自己设。
