订单属性

请求执行交易操作与命令一样正式化,每个订单都有多种属性准备,他们的信息可以使用OrderGet...()HistoryOrderGet...() 函数获得。

函数 OrderGetInteger()HistoryOrderGetInteger()

ENUM_ORDER_PROPERTY_INTEGER

标识符

描述

类型

ORDER_TICKET

订单价格。每个订单分配唯一的号码

long

ORDER_TIME_SETUP

订单设置时间

datetime

ORDER_TYPE

订单类型

ENUM_ORDER_TYPE

ORDER_STATE

订单陈述

ENUM_ORDER_STATE

ORDER_TIME_EXPIRATION

订单终结时间

datetime

ORDER_TIME_DONE

订单执行或取消时间

datetime

ORDER_TIME_SETUP_MSC

以毫秒为单位计算01.01.1970以来下订单执行的时间

long

ORDER_TIME_DONE_MSC

以毫秒为单位计算01.01.1970以来订单执行/取消的时间

long

ORDER_TYPE_FILLING

订单填满类型

ENUM_ORDER_TYPE_FILLING

ORDER_TYPE_TIME

订单使用期

ENUM_ORDER_TYPE_TIME

ORDER_MAGIC

EA交易的ID安置在订单之中(为确保每个EA交易安置都有独特的代码)

long

ORDER_REASON

下单的原因或源

ENUM_ORDER_REASON

ORDER_POSITION_ID

一旦执行,位置指标马上建立一个订单。每个执行订单结果都使订单公开或修改已经存在的位置,明确指出指标的位置同时执行订单

long

ORDER_POSITION_BY_ID

反向持仓标识符,用于关闭订单ORDER_TYPE_CLOSE_BY

long

函数 OrderGetDouble()HistoryOrderGetDouble()

ENUM_ORDER_PROPERTY_DOUBLE

标识符

描述

类型

ORDER_VOLUME_INITIAL

订单最初交易量

double

ORDER_VOLUME_CURRENT

订单当前交易量

double

ORDER_PRICE_OPEN

订单中的规定价格

double

ORDER_SL

斩仓值

double

ORDER_TP

盈利值

double

ORDER_PRICE_CURRENT

交易品种订单的当前价格

double

ORDER_PRICE_STOPLIMIT

限制停止订单的限制价格订单

double

函数 OrderGetString()HistoryOrderGetString()

ENUM_ORDER_PROPERTY_STRING

标识符

描述

类型

ORDER_SYMBOL

交易品种订单

string

ORDER_COMMENT

评价订单

string

当使用OrderSend()函数发送交易要求时,一些操作要求订单类型的指示,订单类型在类型列表中分类,尤其在MqlTradeRequest结构中,能接受到ENUM_ORDER_TYPE项目值。

ENUM_ORDER_TYPE

标识符

描述

ORDER_TYPE_BUY

市场购买订单

ORDER_TYPE_SELL

市场卖出订单

ORDER_TYPE_BUY_LIMIT

限制买入待办订单

ORDER_TYPE_SELL_LIMIT

限制卖出待办订单

ORDER_TYPE_BUY_STOP

停止买入待办订单

ORDER_TYPE_SELL_STOP

停止卖出待办订单

ORDER_TYPE_BUY_STOP_LIMIT

在到达订单价格之上,是限制买入订单安置在停止限制价格中

ORDER_TYPE_SELL_STOP_LIMIT

在到达订单价格之上,是限制卖出订单安置在停止限制价格中

ORDER_TYPE_CLOSE_BY

通过反向持仓平仓的订单

 

每一个订单都有其作用的描述,为获得信息,与ORDER_STATE修饰语一起使用OrderGetInteger()HistoryOrderGetInteger() 函数,允许值存储在 ENUM_ORDER_STATE 项目中。

ENUM_ORDER_STATE

标识符

描述

ORDER_STATE_STARTED

选中订单,并未被经纪人接收

ORDER_STATE_PLACED

接收订单

ORDER_STATE_CANCELED

客户撤销订单

ORDER_STATE_PARTIAL

履行部分订单

ORDER_STATE_FILLED

履行全部订单

ORDER_STATE_REJECTED

驳回订单

ORDER_STATE_EXPIRED

过期订单

ORDER_STATE_REQUEST_ADD

注册订单(到交易系统)

ORDER_STATE_REQUEST_MODIFY

更改订单(改变其参数)

ORDER_STATE_REQUEST_CANCEL

删除订单(从交易系统中删除)

 

在当前时间(有效时间)发送执行交易请求时,应该指定价格和所需的买卖交易量。此外,请记住,金融市场并不能保证某一交易品种可以期望的价格获得所需的全部交易量。因此,实时交易操作通过价格和交易量执行模式进行管理。模式或执行指令定义了价格改变或请求交易量不能在此刻完全满足的情况下的规则。

价格执行模式可以从SYMBOL_TRADE_EXEMODE交易品种属性中获得,其包含来自 ENUM_SYMBOL_TRADE_EXECUTION枚举的标识组合。

执行模式

描述

ENUM_SYMBOL_TRADE_EXECUTION中的值

执行模式

 

(要价执行)

以之前从交易商接收的价格执行市价单。

 

在订单发送之前,交易商会请求特定市价单的价格。在收到价格后,可以确认或拒绝以给定价格执行订单。

SYMBOL_TRADE_EXECUTION_REQUEST

现价执行

 

(现价执行)

立即以指定价格执行市价单。

 

当发送要执行的交易请求时,平台会自动将当前价格添加到订单中。

  • 如果交易商接受该价格,则订单执行。
  • 如果交易商不接受请求价格,则发送"Requote"(重报价) ― 交易商返回可以执行此订单的价格。

SYMBOL_TRADE_EXECUTION_INSTANT

市价执行

 

(市价执行)

交易商不需要与交易者进行额外商量就可以决定订单执行价格。

 

以这种模式发送订单意味着事先同意以这个价格执行。

SYMBOL_TRADE_EXECUTION_MARKET

交易所执行

 

(交易所执行)

交易操作以当前市场报价执行。

SYMBOL_TRADE_EXECUTION_EXCHANGE

交易量成交指令ORDER_TYPE_FILLING订单属性中指定,可能只包含ENUM_ORDER_TYPE_FILLING枚举值

成交指令

描述

ENUM_ORDER_TYPE_FILLING

全数执行或立即取消

订单只能按照指定的交易量执行。

 

如果交易品种的所需交易量目前在市场上不能满足,则该订单将不会被执行。

 

所需交易量可以由几个可用报价组成。

 

由交易服务器决定使用FOK订单的可能性。

ORDER_FILLING_FOK

立即或取消

交易者同意按照订单中指定的场内最大交易量执行成交。

 

如果不能完全成交,则将执行可用交易量的订单,并取消其余交易量。

 

由交易服务器决定使用IOC订单的可能性。

 

ORDER_FILLING_IOC

被动(预订或取消)

BoC订单假设订单只能在市场深度下单,不能立即执行。如果订单可以在下单后立即执行,则取消订单。

 

事实上,BOC指令保证了所下订单的价格会不及当前市场的价格。BoC订单用于实施被动交易,因此订单在下单时不会立即执行,也不会影响当前的流动性。

 

仅支持限价单和止损限价单(ORDER_TYPE_BUY_LIMIT、 ORDER_TYPE_SELL_LIMIT、ORDER_TYPE_BUY_STOP_LIMIT、 ORDER_TYPE_SELL_STOP_LIMIT)。

ORDER_FILLING_BOC

返回

如果部分成交,则订单剩余交易量不会取消,会进一步处理。

 

在市价执行模式下不允许返回订单(市价执行 ― SYMBOL_TRADE_EXECUTION_MARKET)。

ORDER_FILLING_RETURN

当使用OrderSend()函数发送交易请求时,所需交易量执行指令可以在type_filling字段中设置,即在特殊的MqlTradeRequest结构中设置。可以使用ENUM_ORDER_TYPE_FILLING枚举值。若要获取特定活动/完成订单中的属性值,请使用OrderGetInteger()HistoryOrderGetInteger()函数(带有ORDER_TYPE_FILLING修饰符)。

在发送当前执行时间的订单之前,为了正确设置ORDER_TYPE_FILLING值(交易量执行类型),您可以对每个交易品种使用SymbolInfoInteger()函数来获取 SYMBOL_FILLING_MODE属性值,将交易品种允许的交易量执行类型显示为标识组合。除了“市价执行”模式(SYMBOL_TRADE_EXECUTION_MARKET)外,将一直启用ORDER_FILLING_RETURN成交类型。

根据执行模式使用的成交类型可以如下表所示:

执行类型/成交指令类型

全数执行或立即取消(FOK ORDER_FILLING_FOK)

立即或取消(IOC ORDER_FILLING_IOC)

返回(返回ORDER_FILLING_RETURN)

现价执行

 

(SYMBOL_TRADE_EXECUTION_INSTANT)

+ (无论交易品种如何设置)

+ (无论交易品种如何设置)

+ (始终)

要价执行

 

SYMBOL_TRADE_EXECUTION_REQUEST

+ (无论交易品种如何设置)

 

+ (无论交易品种如何设置)

+ (始终)

市价执行

 

SYMBOL_TRADE_EXECUTION_MARKET

+ (在交易品种设置中设置)

+ (在交易品种设置中设置)

- (无论交易品种如何设置,请禁用)

交易所执行

 

SYMBOL_TRADE_EXECUTION_EXCHANGE

+ (在交易品种设置中设置)

+ (在交易品种设置中设置)

+ (始终)

挂单情况下,无论执行类型(SYMBOL_TRADE_EXEMODE)如何,都应该使用ORDER_FILLING_RETURN成交类型,因为这类订单不会在发送时执行。使用挂单时,交易者事先同意,当满足此订单的交易条件时,交易商将使用交易所支持的成交类型。

 

当使用OrderSend() 函数发送交易请求时,订单有效期设定在MqlTradeRequest 特殊结构中的type_time领域,ENUM_ORDER_TYPE_TIME项目值是允许的,使用ORDER_TYPE_TIME修饰语和OrderGetInteger()HistoryOrderGetInteger() 函数可以获得该性质的值。

ENUM_ORDER_TYPE_TIME

标识符

描述

ORDER_TIME_GTC

取消订单

ORDER_TIME_DAY

前交易日订单

ORDER_TIME_SPECIFIED

过期订单

ORDER_TIME_SPECIFIED_DAY

订单将生效直至指定日期的23:59:59。如果该时间超出了交易期,那么该订单会在最近的交易时间内到期。

 

下单原因包含在ORDER_REASON 属性之中。可以通过MQL5程序,移动程序端以及StopOut来下单。可能的ORDER_REASON值会在ENUM_ORDER_REASON枚举中描述。

ENUM_ORDER_REASON

标识符

描述

ORDER_REASON_CLIENT

从桌面程序端下单

ORDER_REASON_MOBILE

从移动程序端下单

ORDER_REASON_WEB

从网页平台下单

ORDER_REASON_EXPERT

从MQL5程序下单,例如EA交易或脚本

ORDER_REASON_SL

因激活止损而下单

ORDER_REASON_TP

因激活止赢而下单

ORDER_REASON_SO

因Stop Out 事件而下单