看到不少朋友在问EA部署的具体流程,今天把实操经验整理一下,顺便纠正几个常见误区。06月30日刚测试了最新版MT4 build 1420和MT5 build 4000,以下步骤均验证通过。
先说MT4,大部分新手卡在第一步:文件放错位置。EA文件必须是.ex4格式(编译后的执行文件),不是.mq4源码。正确路径:MT4安装目录下的MQL4文件夹,里面的Experts子文件夹才是EA存放点。很多人习惯把文件拖到图表上,结果提示“加载失败”,检查下是不是放到了Indicators或Scripts目录。放好后,重启MT4或右键导航栏的“EA交易”刷新,才能看到。
加载前,务必在工具-选项-智能交易系统里,勾选“允许自动交易”和“允许DLL导入”(如果EA用了外部库)。这里有个细节:如果EA调用了自定义指标,还得在“允许导入外部专家”前打钩。然后,把EA拖到图表,弹出的属性窗口里,“常用”标签页确认“允许实时自动交易”已勾选,“输入参数”标签页根据策略调整,比如固定手数0.01还是百分比风险。建议先跑模拟盘,参数设置里把“启用”的勾去掉,只观察信号输出。
MT5流程类似,但路径略有差异:MQL5目录下的Experts文件夹。MT5的EA编译后是.ex5文件。注意,MT5的自动交易开关在“工具-选项-EA交易”里,默认禁止,必须手动开启。另外,MT5的测试模式更严格,如果你用Market Watch里没有的品种加载EA,会直接报错“未找到历史数据”。所以测试前,确保图表数据完整,至少下载最近一年1分钟K线。
部署时容易被忽略的坑:
第一个,动态库依赖。有些EA需要额外的.dll文件,比如网络请求或数据库连接。这些文件必须放在MQL4/Libraries或MQL5/Libraries文件夹,且MT4/MT5的“允许DLL导入”必须开启。注意,部分VPS环境会默认禁用DLL,需要手动在metatrader的配置文件中添加AllowDll=1。
第二个,时间框架冲突。EA通常绑定特定周期,比如H1策略却加载到M1图表,即使参数合理,算法逻辑也可能错乱。检查代码:如果用了iTime()或CopyTime(),时间戳匹配是硬性要求。
第三个,滑点与延迟。实盘部署时,建议在EA输入参数里设置最大滑点(Slippage),比如3点或5点。但别设成0,否则频繁挂单失败。另外,VPS选择靠近经纪商服务器地区,能降低延迟。
最后,实盘上线前,强烈建议在模拟账户跑满一周。观察日志:Journal标签页会记录“init”、“deinit”和“tick”信息。如果出现“OrderSend error 130”或“invalid stops”,说明止损设置逻辑有问题。回测和实盘环境不同,点差、执行速度差异会导致偏差,所以参数微调是常态。
代码层面,给个简单示例:判断EA是否正常加载,可以在OnInit里输出版本号。
int OnInit() {
Print(”EA loaded, version 1.0”);
return(INIT_SUCCEEDED);
}
如果返回INIT_FAILED,检查是否有未初始化的全局变量。
大概就这些。部署过程其实不复杂,但细节决定成败。遇到具体报错,可以贴Journal内容,一起排查。
先说MT4,大部分新手卡在第一步:文件放错位置。EA文件必须是.ex4格式(编译后的执行文件),不是.mq4源码。正确路径:MT4安装目录下的MQL4文件夹,里面的Experts子文件夹才是EA存放点。很多人习惯把文件拖到图表上,结果提示“加载失败”,检查下是不是放到了Indicators或Scripts目录。放好后,重启MT4或右键导航栏的“EA交易”刷新,才能看到。
加载前,务必在工具-选项-智能交易系统里,勾选“允许自动交易”和“允许DLL导入”(如果EA用了外部库)。这里有个细节:如果EA调用了自定义指标,还得在“允许导入外部专家”前打钩。然后,把EA拖到图表,弹出的属性窗口里,“常用”标签页确认“允许实时自动交易”已勾选,“输入参数”标签页根据策略调整,比如固定手数0.01还是百分比风险。建议先跑模拟盘,参数设置里把“启用”的勾去掉,只观察信号输出。
MT5流程类似,但路径略有差异:MQL5目录下的Experts文件夹。MT5的EA编译后是.ex5文件。注意,MT5的自动交易开关在“工具-选项-EA交易”里,默认禁止,必须手动开启。另外,MT5的测试模式更严格,如果你用Market Watch里没有的品种加载EA,会直接报错“未找到历史数据”。所以测试前,确保图表数据完整,至少下载最近一年1分钟K线。
部署时容易被忽略的坑:
第一个,动态库依赖。有些EA需要额外的.dll文件,比如网络请求或数据库连接。这些文件必须放在MQL4/Libraries或MQL5/Libraries文件夹,且MT4/MT5的“允许DLL导入”必须开启。注意,部分VPS环境会默认禁用DLL,需要手动在metatrader的配置文件中添加AllowDll=1。
第二个,时间框架冲突。EA通常绑定特定周期,比如H1策略却加载到M1图表,即使参数合理,算法逻辑也可能错乱。检查代码:如果用了iTime()或CopyTime(),时间戳匹配是硬性要求。
第三个,滑点与延迟。实盘部署时,建议在EA输入参数里设置最大滑点(Slippage),比如3点或5点。但别设成0,否则频繁挂单失败。另外,VPS选择靠近经纪商服务器地区,能降低延迟。
最后,实盘上线前,强烈建议在模拟账户跑满一周。观察日志:Journal标签页会记录“init”、“deinit”和“tick”信息。如果出现“OrderSend error 130”或“invalid stops”,说明止损设置逻辑有问题。回测和实盘环境不同,点差、执行速度差异会导致偏差,所以参数微调是常态。
代码层面,给个简单示例:判断EA是否正常加载,可以在OnInit里输出版本号。
int OnInit() {
Print(”EA loaded, version 1.0”);
return(INIT_SUCCEEDED);
}
如果返回INIT_FAILED,检查是否有未初始化的全局变量。
大概就这些。部署过程其实不复杂,但细节决定成败。遇到具体报错,可以贴Journal内容,一起排查。
专注交易策略编程实现,分享MQL开发技巧与代码优化方案