交易服务器返回代码

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

ENUM_TRADE_RETURN_CODES

代码 常量 描述
10004 TRADE_RETCODE_REQUOTE 报价请求
10006 TRADE_RETCODE_REJECT 拒绝请求
10007 TRADE_RETCODE_CANCEL 交易者取消请求
10008 TRADE_RETCODE_PLACED 安置命令
10009 TRADE_RETCODE_DONE 完成要求
10010 TRADE_RETCODE_DONE_PARTIAL 请求部分完成
10011 TRADE_RETCODE_ERROR 请求处理错误
10012 TRADE_RETCODE_TIMEOUT 超时取消请求
10013 TRADE_RETCODE_INVALID 无效请求
10014 TRADE_RETCODE_INVALID_VOLUME 请求中无效成交量
10015 TRADE_RETCODE_INVALID_PRICE 请求中的无效价格
10016 TRADE_RETCODE_INVALID_STOPS 请求中的无效访问
10017 TRADE_RETCODE_TRADE_DISABLED 关闭交易
10018 TRADE_RETCODE_MARKET_CLOSED 收市
10019 TRADE_RETCODE_NO_MONEY 没有足够的钱实现请求
10020 TRADE_RETCODE_PRICE_CHANGED 改变价格
10021 TRADE_RETCODE_PRICE_OFF 没有报价处理请求
10022 TRADE_RETCODE_INVALID_EXPIRATION 请求中的无效命令截止日期
10023 TRADE_RETCODE_ORDER_CHANGED 改变命令状态
10024 TRADE_RETCODE_TOO_MANY_REQUESTS 太频繁的请求
10025 TRADE_RETCODE_NO_CHANGES 不改变请求
10026 TRADE_RETCODE_SERVER_DISABLES_AT 服务器无效自动交易
10027 TRADE_RETCODE_CLIENT_DISABLES_AT 客户端无效自动交易
10028 TRADE_RETCODE_LOCKED 处理锁住请求
10029 TRADE_RETCODE_FROZEN 命令或安置冻结
10030 TRADE_RETCODE_INVALID_FILL 无效命令填满字节
10031 TRADE_RETCODE_CONNECTION 与服务器无连接
10032 TRADE_RETCODE_ONLY_REAL 只在流水账允许操作
10033 TRADE_RETCODE_LIMIT_ORDERS 待办订单数量达到限制
10034 TRADE_RETCODE_LIMIT_VOLUME 订单成交量和交易品种位置达到限制
10035 TRADE_RETCODE_INVALID_ORDER 错误或禁止的 订单类型
10036 TRADE_RETCODE_POSITION_CLOSED 指定 POSITION_IDENTIFIER的持仓已经被关闭
10038 TRADE_RETCODE_INVALID_CLOSE_VOLUME 平仓交易量超出当前持仓交易量
10039 TRADE_RETCODE_CLOSE_ORDER_EXIST 指定持仓已存在平仓订单。这可能在锁仓系统工作时出现:
  • 如果持仓的平仓订单已经存在,试图反向平仓
  • 如果已有平仓订单和新下单的总交易量超出了当前持仓交易量,试图完全或部分平仓
10040 TRADE_RETCODE_LIMIT_POSITIONS 同时存在于账户中的持仓数量可以通过服务器的设置来限定。达到限定数以后,当再尝试下单时服务器会返回TRADE_RETCODE_LIMIT_POSITIONS错误。限定操作的差异取决于账户持仓类型:
  • 单边持仓 — 考虑持仓数。达到限定时,平台禁止可能增加持仓数的新下单行为。实际上,平台仅允许下单已有持仓的交易品种。由于执行挂单可能导致当前持仓变化但不会增加持仓数,所以不会考虑当前挂单。
  • 锁仓持仓 — 同时考虑持仓和挂单,因为激活挂单经常意味着一个新的持仓。当限定达到时,平台禁止下可以持仓和挂单的新市场订单。
10041 TRADE_RETCODE_REJECT_CANCEL 挂单激活请求被拒绝,订单被取消
10042 TRADE_RETCODE_LONG_ONLY 因为交易品种(POSITION_TYPE_BUY)设置了"只允许买入持仓"的规则,所以请求被拒绝
10043 TRADE_RETCODE_SHORT_ONLY 因为交易品种 (POSITION_TYPE_SELL)设置了"只允许卖出持仓"的规则,所以请求被拒绝
10044 TRADE_RETCODE_CLOSE_ONLY 因为交易品种设置了"只允许平仓"的规则,所以请求被拒绝
10045 TRADE_RETCODE_FIFO_CLOSE 请求被拒绝,因为已为交易账户设置了“仅允许通过FIFO规则平仓”标识(ACCOUNT_FIFO_CLOSE=true)
10046 TRADE_RETCODE_HEDGE_PROHIBITED 请求被拒绝,因为该交易账户设置了“禁用单个交易品种的反向持仓”规则。例如,如果该账户是Buy持仓,那么用户就不能建立Sell持仓或下单卖出挂单。该规则仅适用于使用锁仓账户系统的账户 (ACCOUNT_MARGIN_MODE=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)。