最近帮几个朋友调试EA部署时发现,很多人卡在MT4/MT5平台的细节差异上,尤其是跨平台移植时的文件路径和权限问题。趁今天有空,把从编译到实盘挂机的完整流程捋一遍,全是踩坑换来的经验。
先明确一个前提:MT4和MT5的EA本质上都是C++变体,但MT5的MQL5是面向对象架构,代码复用性更高,而MT4的MQL4更接近过程式。如果你是从MT4转过来的,注意MQL5里没有OrderSend这样的全局函数,必须用CTrade类。我建议新手直接学MQL5,因为未来MT4的维护只会越来越少。
部署第一步:编译环境准备。无论是MT4还是MT5,路径都在安装目录下的Experts文件夹。以MT5为例,默认在C:\Users\你的用户名\AppData\Roaming\MetaQuotes\Terminal\你的终端ID\MQL5\Experts。注意,终端ID是一串随机字符,每个账户对应一个,别把文件扔错目录。推荐先把EA的源代码(.mq4或.mq5文件)放进去,然后打开MetaEditor(快捷键F4),在导航栏里找到文件,右键选择编译。如果报错,90%的情况是引用了第三方库但没复制过来,比如dll或.ex4/.ex5文件。检查下Include文件夹和Libraries文件夹。
第二步:加载EA到图表。编译通过后,回到MT4/MT5界面,拖拽EA到任意货币对图表,或者通过导航栏双击。这里有个细节:MT5允许同时加载多个EA到同一图表,但MT4不行,只能一个。如果你要跑多策略,建议用独立的图表窗口,每个窗口挂一个EA。另外,别忘记在Common标签页勾选“Allow live trading”,否则EA只会干瞪眼。
第三步:参数配置。很多人直接默认参数就跑,结果爆仓。比如固定手数,如果你本金只有200美元,0.01手是极限,但有些EA默认0.1手。建议先在策略测试器里跑历史数据优化参数,别嫌麻烦。优化时注意时间范围,至少选半年的M15数据,同时勾选“Every tick”模式,避免开盘跳空导致的滑点误差。
第四步:实盘调试。挂上EA后,观察Expert日志窗口。常见报错包括“OrderSend error 130”——这是止损设置错误,检查你的止损点数是否大于平台最小允许值。另外,如果EA频繁掉线,大概率是VPS网络不稳。我推荐用香港或新加坡的VPS,延迟低,且不受国内网络波动影响。
最后分享个实用技巧:用FileWrite函数记录每笔交易的开仓理由,比如MACD金叉触发或均线突破。这样复盘时能快速定位逻辑漏洞。代码示范:
int fileHandle = FileOpen("TradeLog.csv", FILE_WRITE|FILE_CSV, ",");
FileWrite(fileHandle, Symbol(), TimeCurrent(), OrderType(), OrderLots(), OrderOpenPrice());
FileClose(fileHandle);
这段代码写个简单的日志,比平台自带的报告更详细。
部署其实不难,难在细节。如果你遇到编译不通过或实盘异常,直接贴报错行号到论坛,我会尽量回复。记住:EA只是工具,风控才是核心。别迷信“稳赚不赔”的脚本,跑通历史回测不代表未来赚钱。
先明确一个前提:MT4和MT5的EA本质上都是C++变体,但MT5的MQL5是面向对象架构,代码复用性更高,而MT4的MQL4更接近过程式。如果你是从MT4转过来的,注意MQL5里没有OrderSend这样的全局函数,必须用CTrade类。我建议新手直接学MQL5,因为未来MT4的维护只会越来越少。
部署第一步:编译环境准备。无论是MT4还是MT5,路径都在安装目录下的Experts文件夹。以MT5为例,默认在C:\Users\你的用户名\AppData\Roaming\MetaQuotes\Terminal\你的终端ID\MQL5\Experts。注意,终端ID是一串随机字符,每个账户对应一个,别把文件扔错目录。推荐先把EA的源代码(.mq4或.mq5文件)放进去,然后打开MetaEditor(快捷键F4),在导航栏里找到文件,右键选择编译。如果报错,90%的情况是引用了第三方库但没复制过来,比如dll或.ex4/.ex5文件。检查下Include文件夹和Libraries文件夹。
第二步:加载EA到图表。编译通过后,回到MT4/MT5界面,拖拽EA到任意货币对图表,或者通过导航栏双击。这里有个细节:MT5允许同时加载多个EA到同一图表,但MT4不行,只能一个。如果你要跑多策略,建议用独立的图表窗口,每个窗口挂一个EA。另外,别忘记在Common标签页勾选“Allow live trading”,否则EA只会干瞪眼。
第三步:参数配置。很多人直接默认参数就跑,结果爆仓。比如固定手数,如果你本金只有200美元,0.01手是极限,但有些EA默认0.1手。建议先在策略测试器里跑历史数据优化参数,别嫌麻烦。优化时注意时间范围,至少选半年的M15数据,同时勾选“Every tick”模式,避免开盘跳空导致的滑点误差。
第四步:实盘调试。挂上EA后,观察Expert日志窗口。常见报错包括“OrderSend error 130”——这是止损设置错误,检查你的止损点数是否大于平台最小允许值。另外,如果EA频繁掉线,大概率是VPS网络不稳。我推荐用香港或新加坡的VPS,延迟低,且不受国内网络波动影响。
最后分享个实用技巧:用FileWrite函数记录每笔交易的开仓理由,比如MACD金叉触发或均线突破。这样复盘时能快速定位逻辑漏洞。代码示范:
int fileHandle = FileOpen("TradeLog.csv", FILE_WRITE|FILE_CSV, ",");
FileWrite(fileHandle, Symbol(), TimeCurrent(), OrderType(), OrderLots(), OrderOpenPrice());
FileClose(fileHandle);
这段代码写个简单的日志,比平台自带的报告更详细。
部署其实不难,难在细节。如果你遇到编译不通过或实盘异常,直接贴报错行号到论坛,我会尽量回复。记住:EA只是工具,风控才是核心。别迷信“稳赚不赔”的脚本,跑通历史回测不代表未来赚钱。
专注交易策略编程实现,分享MQL开发技巧与代码优化方案