Automated trading code next to a live chart
错误码词典

每个返回码:含义、原因、该修还是该等

交易请求被拒时 OrderSend / CTrade 返回的 retcode。每条:含义 → 常见原因 → 处理方向。按 Ctrl / Cmd + F 搜错误码。

  • 含义 → 原因 → 方向,一条不漏
  • 先分类再行动:代码类修、状态类等、执行类停
  • 完整列表以 MQL5 官方文档为准

代码类

请求本身写错了。重试毫无意义,回到代码里修。

10013

Invalid Request

TRADE_RETCODE_INVALID

修代码

请求本身不合法(字段缺失或矛盾)。

常见原因

手数、价格、魔术号字段填错类型或格式。

怎么办

这是代码 bug,不是市场问题。打印完整请求逐字段核对。

10014

Invalid Volume

TRADE_RETCODE_INVALID_VOLUME

修代码

手数不合法。

常见原因

低于最小手数、不按步进对齐、超过上限。

怎么办

下单前用 SYMBOL_VOLUME_MIN / STEP / MAX 归一化 —— 风控计算那篇有完整函数。

10015

Invalid Price

TRADE_RETCODE_INVALID_PRICE

修代码

价格不合法。

常见原因

限价单价格在点差另一侧、价格精度没按 digits 归一化。

怎么办

用 NormalizeDouble 按品种 digits 对齐;限价方向检查一遍。

10016

Invalid Stops

TRADE_RETCODE_INVALID_STOPS

修代码

止损/止盈距离不合法。

常见原因

距离小于最小止损位(stops level)、把 SL 放在了错误一侧。

怎么办

读 SYMBOL_TRADE_STOPS_LEVEL 动态获取最小距离,别写死数字。

10030

Invalid Fill

TRADE_RETCODE_INVALID_FILL

修代码

成交模式不被品种支持。

常见原因

IOC/FOK/GTC 设置与品种允许的模式不符。

怎么办

读 SYMBOL_FILLING_MODE 选择合法模式 —— 换品种后 EA 报这个错,十有八九是它。

状态类

品种或账户当前不允许交易。等状态变化,重试没用。

10017

Trade Disabled

TRADE_RETCODE_TRADE_DISABLED

等待

该品种或账户交易被禁用。

常见原因

品种关闭交易、账户处于只读状态。

怎么办

检查品种与账户状态,这不是重试能解决的。

10018

Market Closed

TRADE_RETCODE_MARKET_CLOSED

等待

市场休市。

常见原因

周末、品种交易时段外、假日。

怎么办

EA 的交易窗口逻辑应提前判断时段,而不是等被拒后再反应。

执行类

当前报价环境恶化:重报价、无报价、冻结。多数情况应暂停而不是硬闯。

10004

Requote

TRADE_RETCODE_REQUOTE

等待

请求的价位已不可用,服务方报出新价。

常见原因

波动时段市价单。

怎么办

CTrade 设置偏离容差(SetDeviationInPoints);高频重报价时说明点差已恶化,应暂停而非硬重试。

10006

Rejected

TRADE_RETCODE_REJECT

等待

请求被服务端拒绝,未给出更具体原因。

常见原因

风控限制、极端行情下的临时限制。

怎么办

记录日志后等待再试;连续出现时停手排查,不要循环轰炸。

10021

Off Quotes

TRADE_RETCODE_PRICE_OFF

等待

当前没有可用报价。

常见原因

流动性断档、数据时段、开盘瞬间。

怎么办

与 Requote 类似但更极端 —— 此刻的报价环境本身不可信,等待而不是重试。

10029

Frozen

TRADE_RETCODE_FROZEN

等待

仓位或挂单处于冻结区,不可修改。

常见原因

价格已贴近触发价。

怎么办

离触发价太近时改单会被拒。改单前检查冻结距离,或等价格离开冻结区。

风控类

不是执行问题,是仓位与挂单设计的问题。需要重新设计。

10019

No Money

TRADE_RETCODE_NO_MONEY

严重

可用保证金不足。

常见原因

手数与净值不匹配、已有持仓占用过多。

怎么办

这是风控问题而不是执行问题 —— 说明你的手数计算没有把已用保证金算进去。

10033

Limit Orders

TRADE_RETCODE_LIMIT_ORDERS

严重

挂单数量达到账户上限。

常见原因

网格类策略无节制挂单。

怎么办

网格与高频挂单策略必须有单量上限 —— 这也是风控设计的一部分。

处理错误码的通用原则

先分类再行动。代码类(10013/10014/10015/10016/10030)重试毫无意义,修代码;状态类(10017/10018)等状态变化;执行类(10004/10021)说明当前报价环境恶化,多数情况下应该暂停而不是硬闯。无脑循环重试是小资金亏损、大资金爆仓的常见起因。

卡在某个返回码上?

把错误码粘进答疑频道,我们按上面的分类给你处理方向。知识库其余六个词典也常在一起查。