兄弟们,最近不少汇友私信问EA部署的问题,尤其是MT4和MT5之间的一些细节差异,今天我抽空整理了一份实操经验贴,希望能帮到刚入坑或者被各种报错搞懵的朋友。帖子内容基于我最近测试的几个策略,涉及VPS环境、文件权限、日志分析这些坑,直接上干货。
先声明,我用的MetaTrader版本是Build 1390以上的MT4和Build 3000以上的MT5,旧版本可能路径或参数有差异,但核心逻辑不变。如果你用的是经纪商定制版,注意检查终端是否允许EA交易,很多平台默认是禁用的,需要手动在“工具-选项-EA交易”里勾选“允许自动交易”和“允许导入DLL”,这一步漏了,后面全是白费。
第一步,编译或获取EA文件。如果你是自己写代码,记得在MetaEditor里按F7编译,生成ex4或ex5文件后,放到对应目录。MT4的EA文件夹是\MQL4\Experts,MT5是\MQL5\Experts。注意,有些平台会把第三方EA归类到“脚本”或“指标”里,但标准做法还是放Experts。如果文件放错位置,终端根本不会识别,你打开导航器看不到EA,别急着怀疑代码,先检查路径。
第二步,附加EA到图表。这里有个常见误区:很多人直接拖拽EA到图表,但如果不设置参数,EA可能以默认值运行。右键图表选择“EA交易系统”,然后点“通用”选项卡,确保“允许实时自动交易”和“允许导入DLL”都勾上。如果你EA调用了外部库,比如一些用到了WinAPI或者加密库的,必须允许DLL导入,否则运行时会直接报错“DLL call failed”。另外,MT5的EA需要设置“允许自动交易”和“允许算法交易”,MT4没有这个区分,但MT5里如果只勾了“允许自动交易”而没勾“允许算法交易”,EA可能会在开仓时被拒绝。
第三步,设置参数。这点容易被忽视,很多策略的魔法数字、手数、止损止盈都在参数里,默认值往往不是你要的。比如我的波段策略,参数里有个“MaxSpread”默认是30点,但某些货币对在数据发布时点差会飙到50,如果不改,EA会一直跳过信号导致零交易。建议在策略测试里先跑一遍优化,把最优参数记下来,然后手动填入。注意,参数大小写敏感,比如“LotSize”写成“lotsize”,EA会报错“unknown input”。
第四步,日志监控。部署完后,别急着关终端,打开“专家”标签页看日志。常见报错有:
- “no history data”:说明你的图表数据不够,EA需要历史K线计算指标,比如均线需要至少200根K线。解决办法是右键图表选“历史数据”下载,或者手动滚动图表到左边加载历史。
- “order send failed”:可能是账户类型问题,比如ECN账户不允许挂单,或者你用的是对冲模式但经纪商只允许锁仓。检查经纪商规则,或者改EA逻辑用市价单。
- “zero divide”:通常是指标计算除零,比如RSI的周期设置为1,或者价格波动为0。检查参数,或者加个if语句防错。
第五步,VPS部署。如果你用本地电脑跑EA,断电断网是家常便饭。我推荐用Linux VPS装MT4/MT5的Wine版,注意不是所有VPS都支持图形界面,但MT4/MT5的终端其实可以后台运行。我在用DigitalOcean的Ubuntu 20.04,装了x11vnc和wine,然后远程桌面登录。关键点是:必须设置自动启动脚本,比如写个bash脚本,每次重启时自动加载MT4并附加EA。我贴个示例:
```
#!/bin/bash
cd /path/to/MT4
wine terminal.exe /portable /config:"config.ini" &
sleep 10
wine explorer.exe /desktop=EA,1920x1080
```
注意,这个脚本需要配合config.ini指定账户和服务器。更简单的方法是用MT4自带的“自动交易”功能,但VPS上如果断线重连,EA可能不会自动恢复,所以建议在“工具-选项-EA交易”里勾选“启用自动交易”和“启用DLL导入”,并在“设置”里把“最大允许风险”调到100%,避免EA因账户权益变化而停止。
最后,测试和回测。别信回测结果,尤其是用MT4自带回测的,那个模型误差很大,因为MT4的回测不支持多线程,而且对点差和滑点的模拟过于理想化。我都是用MT5的“高级回测”模式,开“每笔报价”模式,然后对比实盘数据。如果你发现回测盈利但实盘亏损,90%是滑点和点差问题。建议在实盘前先用模拟账户跑一周,观察成交率和滑点均值,再调整参数。
好了,差不多就这些。如果你遇到具体报错,比如“Array out of range”或者“invalid datetime”,可以跟帖贴日志,我帮你看看。记住,EA部署不是一劳永逸,市场环境在变,你的策略参数也得定期调整。祝各位汇友稳定盈利。
先声明,我用的MetaTrader版本是Build 1390以上的MT4和Build 3000以上的MT5,旧版本可能路径或参数有差异,但核心逻辑不变。如果你用的是经纪商定制版,注意检查终端是否允许EA交易,很多平台默认是禁用的,需要手动在“工具-选项-EA交易”里勾选“允许自动交易”和“允许导入DLL”,这一步漏了,后面全是白费。
第一步,编译或获取EA文件。如果你是自己写代码,记得在MetaEditor里按F7编译,生成ex4或ex5文件后,放到对应目录。MT4的EA文件夹是\MQL4\Experts,MT5是\MQL5\Experts。注意,有些平台会把第三方EA归类到“脚本”或“指标”里,但标准做法还是放Experts。如果文件放错位置,终端根本不会识别,你打开导航器看不到EA,别急着怀疑代码,先检查路径。
第二步,附加EA到图表。这里有个常见误区:很多人直接拖拽EA到图表,但如果不设置参数,EA可能以默认值运行。右键图表选择“EA交易系统”,然后点“通用”选项卡,确保“允许实时自动交易”和“允许导入DLL”都勾上。如果你EA调用了外部库,比如一些用到了WinAPI或者加密库的,必须允许DLL导入,否则运行时会直接报错“DLL call failed”。另外,MT5的EA需要设置“允许自动交易”和“允许算法交易”,MT4没有这个区分,但MT5里如果只勾了“允许自动交易”而没勾“允许算法交易”,EA可能会在开仓时被拒绝。
第三步,设置参数。这点容易被忽视,很多策略的魔法数字、手数、止损止盈都在参数里,默认值往往不是你要的。比如我的波段策略,参数里有个“MaxSpread”默认是30点,但某些货币对在数据发布时点差会飙到50,如果不改,EA会一直跳过信号导致零交易。建议在策略测试里先跑一遍优化,把最优参数记下来,然后手动填入。注意,参数大小写敏感,比如“LotSize”写成“lotsize”,EA会报错“unknown input”。
第四步,日志监控。部署完后,别急着关终端,打开“专家”标签页看日志。常见报错有:
- “no history data”:说明你的图表数据不够,EA需要历史K线计算指标,比如均线需要至少200根K线。解决办法是右键图表选“历史数据”下载,或者手动滚动图表到左边加载历史。
- “order send failed”:可能是账户类型问题,比如ECN账户不允许挂单,或者你用的是对冲模式但经纪商只允许锁仓。检查经纪商规则,或者改EA逻辑用市价单。
- “zero divide”:通常是指标计算除零,比如RSI的周期设置为1,或者价格波动为0。检查参数,或者加个if语句防错。
第五步,VPS部署。如果你用本地电脑跑EA,断电断网是家常便饭。我推荐用Linux VPS装MT4/MT5的Wine版,注意不是所有VPS都支持图形界面,但MT4/MT5的终端其实可以后台运行。我在用DigitalOcean的Ubuntu 20.04,装了x11vnc和wine,然后远程桌面登录。关键点是:必须设置自动启动脚本,比如写个bash脚本,每次重启时自动加载MT4并附加EA。我贴个示例:
```
#!/bin/bash
cd /path/to/MT4
wine terminal.exe /portable /config:"config.ini" &
sleep 10
wine explorer.exe /desktop=EA,1920x1080
```
注意,这个脚本需要配合config.ini指定账户和服务器。更简单的方法是用MT4自带的“自动交易”功能,但VPS上如果断线重连,EA可能不会自动恢复,所以建议在“工具-选项-EA交易”里勾选“启用自动交易”和“启用DLL导入”,并在“设置”里把“最大允许风险”调到100%,避免EA因账户权益变化而停止。
最后,测试和回测。别信回测结果,尤其是用MT4自带回测的,那个模型误差很大,因为MT4的回测不支持多线程,而且对点差和滑点的模拟过于理想化。我都是用MT5的“高级回测”模式,开“每笔报价”模式,然后对比实盘数据。如果你发现回测盈利但实盘亏损,90%是滑点和点差问题。建议在实盘前先用模拟账户跑一周,观察成交率和滑点均值,再调整参数。
好了,差不多就这些。如果你遇到具体报错,比如“Array out of range”或者“invalid datetime”,可以跟帖贴日志,我帮你看看。记住,EA部署不是一劳永逸,市场环境在变,你的策略参数也得定期调整。祝各位汇友稳定盈利。
专注交易策略编程实现,分享MQL开发技巧与代码优化方案