Invalid Request
TRADE_RETCODE_INVALID
请求本身不合法(字段缺失或矛盾)。
常见原因
手数、价格、魔术号字段填错类型或格式。
怎么办
这是代码 bug,不是市场问题。打印完整请求逐字段核对。
交易请求被拒时 OrderSend / CTrade 返回的 retcode。每条:含义 → 常见原因 → 处理方向。按 Ctrl / Cmd + F 搜错误码。
请求本身写错了。重试毫无意义,回到代码里修。
TRADE_RETCODE_INVALID
请求本身不合法(字段缺失或矛盾)。
常见原因
手数、价格、魔术号字段填错类型或格式。
怎么办
这是代码 bug,不是市场问题。打印完整请求逐字段核对。
TRADE_RETCODE_INVALID_VOLUME
手数不合法。
常见原因
低于最小手数、不按步进对齐、超过上限。
怎么办
下单前用 SYMBOL_VOLUME_MIN / STEP / MAX 归一化 —— 风控计算那篇有完整函数。
TRADE_RETCODE_INVALID_PRICE
价格不合法。
常见原因
限价单价格在点差另一侧、价格精度没按 digits 归一化。
怎么办
用 NormalizeDouble 按品种 digits 对齐;限价方向检查一遍。
TRADE_RETCODE_INVALID_STOPS
止损/止盈距离不合法。
常见原因
距离小于最小止损位(stops level)、把 SL 放在了错误一侧。
怎么办
读 SYMBOL_TRADE_STOPS_LEVEL 动态获取最小距离,别写死数字。
TRADE_RETCODE_INVALID_FILL
成交模式不被品种支持。
常见原因
IOC/FOK/GTC 设置与品种允许的模式不符。
怎么办
读 SYMBOL_FILLING_MODE 选择合法模式 —— 换品种后 EA 报这个错,十有八九是它。
品种或账户当前不允许交易。等状态变化,重试没用。
TRADE_RETCODE_TRADE_DISABLED
该品种或账户交易被禁用。
常见原因
品种关闭交易、账户处于只读状态。
怎么办
检查品种与账户状态,这不是重试能解决的。
TRADE_RETCODE_MARKET_CLOSED
市场休市。
常见原因
周末、品种交易时段外、假日。
怎么办
EA 的交易窗口逻辑应提前判断时段,而不是等被拒后再反应。
当前报价环境恶化:重报价、无报价、冻结。多数情况应暂停而不是硬闯。
TRADE_RETCODE_REQUOTE
请求的价位已不可用,服务方报出新价。
常见原因
波动时段市价单。
怎么办
CTrade 设置偏离容差(SetDeviationInPoints);高频重报价时说明点差已恶化,应暂停而非硬重试。
TRADE_RETCODE_REJECT
请求被服务端拒绝,未给出更具体原因。
常见原因
风控限制、极端行情下的临时限制。
怎么办
记录日志后等待再试;连续出现时停手排查,不要循环轰炸。
TRADE_RETCODE_PRICE_OFF
当前没有可用报价。
常见原因
流动性断档、数据时段、开盘瞬间。
怎么办
与 Requote 类似但更极端 —— 此刻的报价环境本身不可信,等待而不是重试。
TRADE_RETCODE_FROZEN
仓位或挂单处于冻结区,不可修改。
常见原因
价格已贴近触发价。
怎么办
离触发价太近时改单会被拒。改单前检查冻结距离,或等价格离开冻结区。
不是执行问题,是仓位与挂单设计的问题。需要重新设计。
TRADE_RETCODE_NO_MONEY
可用保证金不足。
常见原因
手数与净值不匹配、已有持仓占用过多。
怎么办
这是风控问题而不是执行问题 —— 说明你的手数计算没有把已用保证金算进去。
TRADE_RETCODE_LIMIT_ORDERS
挂单数量达到账户上限。
常见原因
网格类策略无节制挂单。
怎么办
网格与高频挂单策略必须有单量上限 —— 这也是风控设计的一部分。
先分类再行动。代码类(10013/10014/10015/10016/10030)重试毫无意义,修代码;状态类(10017/10018)等状态变化;执行类(10004/10021)说明当前报价环境恶化,多数情况下应该暂停而不是硬闯。无脑循环重试是小资金亏损、大资金爆仓的常见起因。