MQL5 / MT5 错误代码处理指南 — ERR_NO_MONEY、ERR_TRADE_DISABLED 完整列表
目录
- 如何查看Expert日志标签页
- 常见错误代码及处理方法
- ERR_NO_MONEY(错误代码 134)
- ERR_TRADE_DISABLED(错误代码 4109)
- ERR_MARKET_CLOSED(错误代码 132)
- ERR_INVALID_STOPS(错误代码 130)
- ERR_OFF_QUOTES(错误代码 136)
- ERR_TRADE_TIMEOUT(错误代码 128)
- TRADE_RETCODE_REJECT(返回代码 10006)
- "Margin level too low"
- "No signal on this bar" 或 "Wait for next bar"
- 错误优先级分类
- 高效查看Expert日志的方法
- 筛选日志
- 日志文件保存位置
- 总结
- 常见问题(FAQ)
- Q:在哪里可以查询错误代码?
- Q:出现大量错误时,是否应该停止EA?
- Q:出现「Invalid account」错误,怎么处理?
- Q:没有错误,但EA不建仓,是什么原因?
MQL5 / MT5 错误代码处理指南 — ERR_NO_MONEY、ERR_TRADE_DISABLED 完整列表
当MT5的Expert日志标签页中出现 ERR_NO_MONEY、ERR_TRADE_DISABLED 等MQL5错误时,难免令人担忧,但绝大多数错误的原因与解决方法都非常明确。本文汇总了EA实际运行过程中最常见的错误代码及其处理方案。
如何查看Expert日志标签页
点击MT5底部的「Expert」标签页,即可按时间顺序查看所有EA的日志记录。
显示格式:
2026.05.18 10:00:01.234 GOLD EMA ATR EA XAUUSD,H1: [ERROR] 130
时间 EA名称 交易对 时间框架 消息内容
如果出现错误,请根据错误代码编号来定位原因。
常见错误代码及处理方法
ERR_NO_MONEY(错误代码 134)
示例消息: "Order failed: not enough money"
"ERR_NO_MONEY"
原因: 保证金不足,无法建立仓位。
处理方法:
- 在MT5的「交易」标签页中确认当前的保证金维持率
- 若维持率接近100%以下,考虑追加入金
- 降低EA的RiskPercent以减小手数
- 手动平掉部分持仓,回收保证金
ERR_TRADE_DISABLED(错误代码 4109)
示例消息: "Trade is not allowed"
"AutoTrading disabled"
原因: MT5的自动交易功能已关闭。
处理方法:
- 点击MT5顶部工具栏的「自动交易」按钮,将其切换为开启状态(绿色)
- 依次进入 工具 → 选项 → 专家顾问 → 勾选「允许自动交易」,然后重启MT5
VPS重启后MT5自动启动时,此错误较为常见。
ERR_MARKET_CLOSED(错误代码 132)
示例消息: "Market is closed"
原因: EA在非交易时间(周末或节假日)尝试建仓。
处理方法: 通常无需处理。从周六00:00至周日约17:00(服务器时间),市场处于关闭状态。在此期间若EA尝试入场,便会出现此错误,周一将自动恢复交易。
ERR_INVALID_STOPS(错误代码 130)
示例消息: "Invalid stops"
"Stop level violation"
原因: SL(止损)或TP(止盈)的设置值触及了券商的最小止损距离限制。
处理方法:
- 确认券商的止损距离要求(在MT5中右键点击交易品种 → 规格 → 查看「止损级别」一栏)
- 确认EA的SL幅度大于券商设定的止损距离
- 此错误在ATR值极小的低波动时段尤为常见
ERR_OFF_QUOTES(错误代码 136)
示例消息: "Off quotes"
原因: 未能从券商服务器接收到报价,存在连接问题。
处理方法:
- 查看MT5底部状态栏确认连接状态
- 若已断开,请重启MT5
- 查看券商是否发布服务器故障通知
- 检查VPS的网络连接状态
ERR_TRADE_TIMEOUT(错误代码 128)
示例消息: "Trade timeout"
原因: 订单执行超时,由服务器拥堵或网络延迟引起。
处理方法:
- 此错误多发于重要数据公布后等高负载时段
- EA通常会在下一个Tick自动重试,一般无需干预
- 若频繁发生,建议检查VPS的网络环境或考虑更换券商
TRADE_RETCODE_REJECT(返回代码 10006)
示例消息: "Request rejected"
原因: 订单被券商拒绝,可能是因为价差过大或价格波动过快。
处理方法:
- 检查MaxSpreadPoints的设置值,此错误多发于价差扩大时
- 若仅在重要数据公布后出现,可视为正常行为忽略
- 若频繁发生,可适当调高MaxSpreadPoints的值
"Margin level too low"
示例消息: "Margin level too low. Skip signal."
原因: EA设置了 UseMarginCheck = true,当保证金维持率低于MinMarginLevel(如200%)时,EA会自动停止建仓。
处理方法:
- 这是正常的保护机制,并非错误
- 保证金维持率恢复后,EA将自动恢复建仓
- 根本解决方案:追加入金,或降低RiskPercent
"No signal on this bar" 或 "Wait for next bar"
这不是错误,而是调试信息。
"No signal. ATR=1245, EMA(50)=1998.23"
这是EA每次扫描图表后输出的正常日志,表示「本次未满足入场条件」。
错误优先级分类
| 优先级 | 错误 | 处理方式 |
|---|---|---|
| 紧急 | ERR_NO_MONEY(134) | 立即补充保证金 |
| 紧急 | ERR_TRADE_DISABLED(4109) | 开启自动交易 |
| 注意 | ERR_INVALID_STOPS(130) | 重新检查SL设置 |
| 注意 | ERR_OFF_QUOTES(136)频繁出现 | 检查连接环境 |
| 正常 | ERR_MARKET_CLOSED(132)仅限周末 | 无需处理 |
| 正常 | ERR_TRADE_TIMEOUT(128)偶发 | 无需处理 |
| 正常 | Margin level too low | 保证金不足时的正常保护动作 |
高效查看Expert日志的方法
筛选日志
在Expert标签页内右键点击 → 选择「过滤器」,可仅显示特定EA或特定错误的日志。
日志文件保存位置
MT5的日志文件保存在以下路径:
C:\Users\[用户名]\AppData\Roaming\MetaQuotes\Terminal\[ID]\MQL5\Logs\
系统会按日期自动生成对应文件。排查错误时,请打开该文件夹进行查阅。
总结
EA的绝大多数错误可归为以下四类:
- 保证金不足:追加入金或缩小手数即可解决
- 自动交易已关闭:点击按钮开启即可
- 连接问题:重启MT5或检查VPS网络状态
- 正常行为:无需处理(周末市场关闭、价差扩大时的回避机制等)
建议养成每天查看Expert日志标签页的习惯,快速识别高优先级错误(134、4109),及时响应处理。
常见问题(FAQ)
Q:在哪里可以查询错误代码?
可在MQL5官方文档(mql5.com)中查看完整的错误代码列表。此外,也可通过MT5的帮助功能(F1键)进行搜索。
Q:出现大量错误时,是否应该停止EA?
若只是偶发性的ERR_MARKET_CLOSED(132)或ERR_TRADE_TIMEOUT(128),无需停止EA。但若ERR_NO_MONEY(134)反复出现,建议暂停EA并确认保证金状况后再重新启动。
Q:出现「Invalid account」错误,怎么处理?
MT5的登录信息(服务器名、登录ID、密码)可能有误。请尝试通过 文件 → 开设交易账户 重新登录。
Q:没有错误,但EA不建仓,是什么原因?
如果日志中没有错误却不建仓,说明当前处于「未产生交易信号的正常状态」。EA并非在每根K线都会入场,只有在条件满足时才会建仓。请耐心观察一段时间。以H1时间框架的EA为例,每天入场1至3次属于正常范围。
相关文章