交易服务器返回代码
交易服务器返回代码
通过使用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)。 |