交易服务器返回代码

通过使用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)。