跳至内容

交易服务器返回代码

交易服务器返回代码

通过使用OrderSend()函数,所有执行交易操作的请求都以MqlTradeRequest交易请求结构发送。函数执行结果代替MqlTradeResult结构,retcode域包括交易服务器返回代码,所有代码都在ENUM_TRADE_RETURN_CODES项目中描述。

ENUM_TRADE_RETURN_CODES

代码常量描述
10004TRADE_RETCODE_REQUOTE报价请求
10006TRADE_RETCODE_REJECT拒绝请求
10007TRADE_RETCODE_CANCEL交易者取消请求
10008TRADE_RETCODE_PLACED安置命令
10009TRADE_RETCODE_DONE完成要求
10010TRADE_RETCODE_DONE_PARTIAL请求部分完成
10011TRADE_RETCODE_ERROR请求处理错误
10012TRADE_RETCODE_TIMEOUT超时取消请求
10013TRADE_RETCODE_INVALID无效请求
10014TRADE_RETCODE_INVALID_VOLUME请求中无效成交量
10015TRADE_RETCODE_INVALID_PRICE请求中的无效价格
10016TRADE_RETCODE_INVALID_STOPS请求中的无效访问
10017TRADE_RETCODE_TRADE_DISABLED关闭交易
10018TRADE_RETCODE_MARKET_CLOSED收市
10019TRADE_RETCODE_NO_MONEY没有足够的钱实现请求
10020TRADE_RETCODE_PRICE_CHANGED改变价格
10021TRADE_RETCODE_PRICE_OFF没有报价处理请求
10022TRADE_RETCODE_INVALID_EXPIRATION请求中的无效命令截止日期
10023TRADE_RETCODE_ORDER_CHANGED改变命令状态
10024TRADE_RETCODE_TOO_MANY_REQUESTS太频繁的请求
10025TRADE_RETCODE_NO_CHANGES不改变请求
10026TRADE_RETCODE_SERVER_DISABLES_AT服务器无效自动交易
10027TRADE_RETCODE_CLIENT_DISABLES_AT客户端无效自动交易
10028TRADE_RETCODE_LOCKED处理锁住请求
10029TRADE_RETCODE_FROZEN命令或安置冻结
10030TRADE_RETCODE_INVALID_FILL无效命令填满字节
10031TRADE_RETCODE_CONNECTION与服务器无连接
10032TRADE_RETCODE_ONLY_REAL只在流水账允许操作
10033TRADE_RETCODE_LIMIT_ORDERS待办订单数量达到限制
10034TRADE_RETCODE_LIMIT_VOLUME订单成交量和交易品种位置达到限制
10035TRADE_RETCODE_INVALID_ORDER错误或禁止的 订单类型
10036TRADE_RETCODE_POSITION_CLOSED指定 POSITION_IDENTIFIER的持仓已经被关闭
10038TRADE_RETCODE_INVALID_CLOSE_VOLUME平仓交易量超出当前持仓交易量
10039TRADE_RETCODE_CLOSE_ORDER_EXIST指定持仓已存在平仓订单。这可能在锁仓系统工作时出现:

- 如果持仓的平仓订单已经存在,试图反向平仓
- 如果已有平仓订单和新下单的总交易量超出了当前持仓交易量,试图完全或部分平仓
10040TRADE_RETCODE_LIMIT_POSITIONS同时存在于账户中的持仓数量可以通过服务器的设置来限定。达到限定数以后,当再尝试下单时服务器会返回TRADE_RETCODE_LIMIT_POSITIONS错误。限定操作的差异取决于账户持仓类型:

- 单边持仓 — 考虑持仓数。达到限定时,平台禁止可能增加持仓数的新下单行为。实际上,平台仅允许下单已有持仓的交易品种。由于执行挂单可能导致当前持仓变化但不会增加持仓数,所以不会考虑当前挂单。
- 锁仓持仓 — 同时考虑持仓和挂单,因为激活挂单经常意味着一个新的持仓。当限定达到时,平台禁止下可以持仓和挂单的新市场订单。
10041TRADE_RETCODE_REJECT_CANCEL挂单激活请求被拒绝,订单被取消
10042TRADE_RETCODE_LONG_ONLY因为交易品种(POSITION_TYPE_BUY)设置了"只允许买入持仓"的规则,所以请求被拒绝
10043TRADE_RETCODE_SHORT_ONLY因为交易品种 (POSITION_TYPE_SELL)设置了"只允许卖出持仓"的规则,所以请求被拒绝
10044TRADE_RETCODE_CLOSE_ONLY因为交易品种设置了"只允许平仓"的规则,所以请求被拒绝
10045TRADE_RETCODE_FIFO_CLOSE请求被拒绝,因为已为交易账户设置了“仅允许通过FIFO规则平仓”标识(ACCOUNT_FIFO_CLOSE=true)
10046TRADE_RETCODE_HEDGE_PROHIBITED请求被拒绝,因为该交易账户设置了“禁用单个交易品种的反向持仓”规则。例如,如果该账户是Buy持仓,那么用户就不能建立Sell持仓或下单卖出挂单。该规则仅适用于使用锁仓账户系统的账户 (ACCOUNT_MARGIN_MODE=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)。