MT5 EA自动交易实战指南:从策略编写到实盘部署全流程

EA与工具 2026-9-14 09:03 mn66228 19 全文 2347 字 约 6 分钟
XM 推荐平台

覆盖品种全,新手友好,支持多种入金方式

CySEC(塞浦路斯) / ASIC(澳洲) / IFSC(伯利兹) · 最低入金 $5
摘要:说出来可能有人不信:我统计过自己经手的四十多套MT5 EA,真正能在实盘稳定跑满三个月的不到三分之一。剩下的不是逻辑崩了,而是死在部署环节——参数没对齐、品种后缀没改、VPS掉线没人管。策略写得再漂亮,最后一步掉链子,账户照样挨打。黄金这种

MT5 EA自动交易实战指南:从策略编写到实盘部署全流程

说出来可能有人不信:我统计过自己经手的四十多套MT5 EA,真正能在实盘稳定跑满三个月的不到三分之一。剩下的不是逻辑崩了,而是死在部署环节——参数没对齐、品种后缀没改、VPS掉线没人管。策略写得再漂亮,最后一步掉链子,账户照样挨打。黄金这种波动品种尤其明显,一个滑点处理不当,回测里盈利因子1.4的策略,实盘能给你干到0.9。

MT5 EA自动交易实战指南:从策略编写到实盘部署全流程

所以这篇不讲虚的,从代码骨架到实盘挂载,把整条链路走一遍。你手上有现成的EA可以直接跳到第三节。

先搞清楚你的策略在MT5里怎么落地

MT5和MT4的EA结构差异不小,最直接的是订单系统改成了MqlTradeRequest结构体。写黄金策略绕不开这几件事:点差过滤、滑点控制、持仓管理。给个最小可运行的骨架逻辑,伪代码形式,方便你套自己的策略:

  • OnTick() 里先判断 NewBar(),避免每个tick都计算信号
  • 用 CopyRates() 拉最近N根K线,计算你的指标值(比如ATR、均线偏离)
  • 信号触发后,先检查 Spread 是否小于设定阈值,黄金在数据发布前后点差能扩大数倍
  • 组装 MqlTradeRequest:action=TRADE_ACTION_DEAL,symbol=_Symbol,volume按风险百分比换算手数
  • 用 OrderSend() 发送,检查返回码,10009是成功,10004是重新报价,10021是无效价格

注意一个坑:MT5默认是净持仓账户,如果你写的是对冲逻辑(同时持有多空),必须确认账户是 hedging 模式,否则第二单会直接平掉第一单。XM和Exness的MT5标准账户大多是净持仓,Exness的部分账户类型支持对冲,开户前问清楚。

常见错误:很多人直接把MT4的 OrderSend() 签名复制过来,编译报错还找不到原因。MT5的 OrderSend 返回的是 bool,实际结果要看 MqlTradeResult 结构体里的 retcode。

回测数据别只看胜率,这三个指标一起看

我见过太多人拿着胜率70%的回测报告来找我,一看盈利因子0.8——赚小亏大,胜率再高也是慢性失血。黄金EA的回测我通常看四个数:

  • 盈利因子(Profit Factor):低于1.2的基本不用考虑实盘,1.5以上算及格
  • 最大回撤(Max Drawdown):黄金策略回撤超过25%就要警惕,实盘往往更狠
  • 交易次数:少于200次的回测样本没有统计意义
  • 平均持仓时间:和你的策略逻辑是否匹配,剥头皮策略持仓几小时就不对劲

拿我最近调的一套黄金趋势EA举例。初始参数下,2020-2023年回测胜率58%,盈利因子1.1,最大回撤31%。问题出在止损太宽,黄金一波急拉直接打穿。把ATR倍数从3.0降到2.0,同时加入点差过滤(点差大于50点不进场),盈利因子提到1.6,回撤压到18%。改动就两行参数,效果差出一倍。

注意:MT5回测的「每个tick」模式最接近实盘,但速度慢。我一般先用「1分钟OHLC」快速筛参数,再用「每个tick」验证最终版本。历史数据质量很重要,在MT5里用「符号」右键导入真实tick数据,别用经纪商默认的合成数据。

从回测到实盘,中间隔着五个配置项

回测赚钱、实盘亏钱,八成是下面这几个地方没对齐:

品种后缀。XM的黄金代码是GOLD,Exness是XAUUSDm或XAUUSD,IC Markets是XAUUSD。EA里硬编码 _Symbol 一般没事,但如果你的代码里写了 "XAUUSD" 字符串,换经纪商直接失效。建议用 SymbolInfoString(_Symbol, SYMBOL_DESCRIPTION) 动态获取。

合约大小。标准黄金合约是100盎司/手,但Exness的某些账户类型是10盎司/手。手数换算公式要跟着改,否则风险敞口差10倍。这个坑我踩过,一笔本该0.1手的单子下成了1手,幸好止损及时。

止损水平(Stops Level)。不同经纪商对最小止损距离要求不同。Exness的黄金最小止损距离可能是0,但XM可能要求至少10个点。用 SYMBOL_TRADE_STOPS_LEVEL 动态读取,别写死。

VPS延迟。黄金对执行速度敏感。我实测过,同一套EA在普通VPS上平均滑点1.8个点,换到延迟低于5ms的VPS后降到0.6个点。按每月200笔交易算,光滑点就差出不少利润。选VPS看三点:离经纪商服务器近、内存至少2G、支持MT5的64位版本。

自动交易开关。MT5顶部工具栏那个「算法交易」按钮必须是绿色。很多人挂上EA发现没反应,就是这里没开。另外在「工具-选项-EA」里勾选「允许算法交易」,两个地方都要确认。

实盘运行后的排查清单

EA挂上去不是就完事了。我习惯在第一个月每天检查这几项:

  • 日志里有没有 OrderSend 返回 10004(重新报价)或 10006(请求被拒绝)
  • 实际成交价和信号价的偏差是否在可接受范围(黄金一般不超过2个点)
  • 持仓手数和预期是否一致,尤其注意经纪商有没有悄悄改合约规格
  • VPS内存占用,MT5跑久了内存泄漏不是新鲜事,超过500M就重启一次

遇到EA突然不交易,先看日志。最常见的是「invalid stops」——止损设得太近被拒。其次是「not enough money」——保证金不够,黄金波动大时占用保证金会临时上升。还有一种情况是周末收盘后EA还在跑,周一开盘第一笔单子容易出问题,建议在代码里加个交易时段过滤。

你在部署MT5 EA时遇到过哪种报错?是订单被拒、参数对不上,还是VPS半夜掉线?留言说说你的情况,我帮你看看日志里该翻哪一行。

免责声明:本文仅代表作者观点,不构成任何投资建议。市场有风险,交易需谨慎。
免责声明
本文内容仅供参考,不构成任何投资建议或交易指导。文章观点仅代表作者本人,不代表本站立场。外汇保证金交易涉及高风险,可能导致本金全额亏损,投资者应充分评估自身风险承受能力后谨慎决策,据此操作,风险自担。汇友之家合作的各家经纪商均持有正规外汇牌照,但本站不参与其经营;经纪商存在破产清算、资不抵债、跑路或躲避责任等不可控风险,本站亦不承诺任何经纪商资金的绝对安全。请知悉!