上个月想回测一个均值回归策略,标的是一种冷门的股票指数。结果打开MT5的策略测试器,选品种的时候翻遍了列表都没找到。我那个EA在初始化的时候直接报错"symbol not found",连跑都没法跑。
论坛上最常见的是建议让你找交易商加品种,排队等审批,黄花菜都凉了。其实MT5自己就带了一个"自定义品种"的功能,MetaTrader 5官方帮助文档里也专门有一章讲这个。但文档写的是标准操作流程,实际动手的时候有几个坑,文档里压根没提。
第一步:准备数据源
你得先有这个品种的历史K线数据。我是从第三方数据商买的CSV格式数据,列结构是:Date(时间)、Open、High、Low、Close、Tick Volume。这里有个细节:时间区必须和MT5终端的时间区一致,否则回测的时候开高低收的时间点全错位了。
第二步:创建自定义品种
打开MT5,在市场报价窗口右键,选"交易品种",弹出窗口底部有个"创建自定义交易品种"的按钮。点了之后会弹出一个配置面板。
第一个坑就来了:品种名字不能乱起。官方文档里写了,只能包含拉丁字母、"."、"_"、"&"和"#"这几种符号,空格和
< > : " / | ? *这些都不能用。我把它命名为CUSTOM_INDEX。在"复制自"那里,我选了一个跟它属性相近的现有品种——这样大部分参数比如小数位数、最小波动单位、合约规格就自动填好了,不用一个一个手动输入。第三步:配置交易和报价时段
这一步在文档里有提,但很容易被忽略。自定义品种创建出来后,必须给它设置"交易时段"和"报价时段"。如果这两项留空,EA在回测的时候收到报价但不会下单。我直接设成24/5,匹配那个指数的常规交易时间。特别注意,如果勾了"启用独立的交易期",每个交易时段必须落在报价时段的时间范围内,否则EA无法交易。
第四步:导入数据
回到交易品种列表,右键你刚创建的品种,选"导入"。找到你准备好的CSV文件。如果CSV有表头,MT5会自动匹配列;没有的话就手动选一下。导入完成之后,去"历史中心"里就能看到这个品种的数据了。
说一个官方帮助里没写的隐藏坑
自定义品种创建完之后,可以用"导出"功能生成一个JSON文件,文档里说这可以在不同终端之间迁移配置。但我试了之后发现,这个JSON里存的是数据文件的绝对路径。如果你想把它导入VPS上的另一个MT5,路径对不上,导入就会失败。我一开始没意识到这个问题,折腾了一个小时才想通。我的解决办法是:放弃用JSON迁移,直接把CSV数据文件复制到VPS上,在VPS那边重新创建一次品种再导入数据。笨是笨了点,但稳。
第五步:开始回测
开策略测试器(Ctrl+R),选好你的EA,交易品种选
CUSTOM_INDEX。数据就会用你刚才导入的那一份。如果你是在VPS上跑回测,记得VPS那边也要单独导入一遍数据——自定义品种的数据是存在本地的,不会通过交易商的服务器同步。参考来源:MetaTrader 5帮助 - 自定义金融品种(metatrader5.com)。
本文首发于FXEAR.com,原创内容,未经授权禁止转载。
```