订单特性(活跃和历史)

在与交易操作相关的章节中,特别是与 买入/卖出平仓下达挂单相关的章节中,我们已经看到请求是根据 MqlTradeRequest 结构体中特定字段的填充发送到服务器的,其中大多数字段直接定义了生成订单的特性。MQL5 API 允许你了解这些特性以及由交易系统本身设置的一些其他特性,比如订单号、注册时间和状态。

值得注意的是,订单特性列表对于活跃订单和历史订单是通用的,当然,许多特性的值会有所不同。

在 MQL5 中,订单特性根据我们已经熟悉的基于值类型的原则进行了分组:整数型(与 long/ulong 兼容)、实数型 (double) 和字符串型。每种特性组都有自己的枚举。

整数型特性在 ENUM_ORDER_PROPERTY_INTEGER 中汇总,并在下表中列出。

标识符

说明

类型

ORDER_TYPE

订单类型

ENUM_ORDER_TYPE

ORDER_TYPE_FILLING

按交易量分类的订单类型

ENUM_ORDER_TYPE_FILLING

ORDER_TYPE_TIME

订单生命周期(挂单)

ENUM_ORDER_TYPE_TIME

ORDER_TIME_EXPIRATION

订单到期时间(挂单)

datetime

ORDER_MAGIC

由下订单的 EA 交易设置的任意标识符

ulong

ORDER_TICKET

订单号;服务器分配给每个订单的唯一编号

ulong

ORDER_STATE

订单状态

ENUM_ORDER_STATE(见下文)

ORDER_REASON

订单的原因或来源

ENUM_ORDER_REASON(见下文)

ORDER_TIME_SETUP

订单下达时间

datetime

ORDER_TIME_DONE

订单执行或撤销时间

datetime

ORDER_TIME_SETUP_MSC

下单执行时间(毫秒)

ulong

ORDER_TIME_DONE_MSC

订单执行/撤回时间(毫秒)

ulong

ORDER_POSITION_ID

订单执行时生成或执行修改的仓位 ID

ulong

ORDER_POSITION_BY_ID

ORDER_TYPE_CLOSE_BY 类型订单的对应仓位标识符

ulong

每一笔执行的订单都会生成一笔交易,用于开立新仓位或改变现有仓位。在 ORDER_POSITION_ID 特性中,该仓位的 ID 被分配给已执行的订单。

ENUM_ORDER_STATE 枚举包含说明订单状态的元素。参见下面订单的简化方案(状态图)。

标识符

说明

ORDER_STATE_STARTED

订单已经过正确性检查,但尚未被服务器接受

ORDER_STATE_PLACED

订单已被服务器接受

ORDER_STATE_CANCELED

订单已被客户(用户或 MQL 程序)取消

ORDER_STATE_PARTIAL

订单已部分执行

ORDER_STATE_FILLED

订单已全部履行

ORDER_STATE_REJECTED

订单已被服务器拒绝

ORDER_STATE_EXPIRED

订单已在到期时取消

ORDER_STATE_REQUEST_ADD

订单正在注册(正在交易系统中下单)

ORDER_STATE_REQUEST_MODIFY

订单正在被修改(其参数被更改)

ORDER_STATE_REQUEST_CANCEL

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

订单状态图表

订单状态图

只有活跃订单才可以更改状态。对于历史订单(已完成或已取消),状态是固定的。

你可以取消已经部分履行的订单,然后其在历史中的状态将变为 ORDER_STATE_CANCELED。

ORDER_STATE_PARTIAL 仅适用于活跃订单。已执行(历史)订单的状态始终为 ORDER_STATE_FILLED。

ENUM_ORDER_REASON 枚举指定了可能的订单来源选项。

标识符

说明

ORDER_REASON_CLIENT

从桌面终端手动下单

ORDER_REASON_EXPERT

由 EA 交易或脚本从桌面终端下单

ORDER_REASON_MOBILE

从移动应用程序下单

ORDER_REASON_WEB

从 WEB 终端(浏览器)下单

ORDER_REASON_SL

作为触发止损的结果由服务器下单

ORDER_REASON_TP

作为触发止盈的结果由服务器下单

ORDER_REASON_SO

作为停止事件的结果由服务器下单

真实特性收集在 ENUM_ORDER_PROPERTY_DOUBLE 枚举中。

标识符

说明

ORDER_VOLUME_INITIAL

下单时的初始交易量

ORDER_VOLUME_CURRENT

当前交易量(初始的或部分执行后剩余的交易量)

ORDER_PRICE_OPEN

订单中显示的价格

ORDER_PRICE_CURRENT

尚未执行订单的当前交易品种价格或执行价格

ORDER_SL

止损水平

ORDER_TP

止盈水平

ORDER_PRICE_STOPLIMIT

触发 StopLimit 订单时,下达限价订单的价格

ORDER_PRICE_CURRENT 特性包含活动买入挂单的当前 Ask 价格或活动卖出挂单的 Bid 价格。“当前价格”是指使用 OrderSelectOrderGetTicket 选择订单时交易环境中的已知价格。对于历史中已执行的订单,此特性包含执行价格,由于滑点,该价格可能与订单中指定的价格不同。

仅当订单状态为 ORDER_STATE_PARTIAL 时,ORDER_VOLUME_INITIAL 和 ORDER_VOLUME_CURRENT 特性才不相等。

如果订单是部分完成的,那么它在历史中的 ORDER_VOLUME_INITIAL 特性将等于最后完成的部分的大小,并且与原始完整交易量相关的所有其他“完成”将作为单独的订单(和交易)来执行。

在 ENUM_ORDER_PROPERTY_STRING 枚举中说明了字符串特性。

标识符

说明

ORDER_SYMBOL

下单的交易品种

ORDER_COMMENT

注释

ORDER_EXTERNAL_ID

外部交易系统(交易所)中的订单 ID

要读取上述所有特性,有两组不同的函数:分别用于活跃订单和历史订单。首先,我们将考虑活跃订单的函数,我们将返回到历史订单(在我们熟悉选择 历史中所需时期的原则后)。