问题描述
如果一个“新订单单一”订单是 GTD,也就是说它会在 90 天后到期,那么 GTD 订单传统上有时间戳组件还是只有日期?因此,如果我在上午 10 点下达 90 天的 GTD 订单,并且我没有指定时间戳,那么该订单将在 90 天的上午 10:00:01 到期对我来说是有意义的。 如果我要下 90 天的 GTD 订单并且我特别指出时间戳是上午 11:46,我预计它会在 11:46:01 到期——或者类似的时间。有意义吗?
我正在与某人进行讨论,他们试图说服我该订单将在一天结束时的 90 天后到期 --- 这毫无意义,违反直觉。 谢谢你
解决方法
与 FIX 的所有事情一样,这取决于您的交易对手。
默认的 FIX 消息字典充其量只是一个建议,经纪人可以并且通常以各种奇怪的方式使用它。也许 FIX 文档可能会指定它“应该”是什么,但实际上这并不重要。
永远不要相信交易对手的文档以外的任何东西。
,通常取决于交易对手,因此值得检查他们的规范,因为他们支持的内容会更清楚,如果您只是自己做一些代码/测试,那么使用结束就可以了。 EOD 非常标准,我还没有遇到过根据输入时间到期的 GTD。
,永远不要相信交易对手的文档以外的任何东西。
@grant-birchmeier 说得很对。
值得强调的一点是,GTD TimeInForce
可以有 ExpireDate
或 ExpireTime
- 后者明确说明您希望我们的订单何时发出(如果您交易对手支持!)
关于这一点,FIX Online Specification 是这样说的:
可以交易多天的订单的基本业务假设,例如 TimeInForce(59) = 1 (GTC) 和 6 (GTD) 订单在未来交易日到期(以下称为 GT 订单)是未完全执行且未取消且未在指定日期到期的 GT 订单仍可供经纪商在第二天执行。 请注意,“天”的概念由市场惯例决定,这将是特定于证券的。 ... 当具有 TimeInForce(59) 的订单的 ExpireDate(432) 或 ExpireTime(132) 时= 6 (GTD) 或 TimeInForce(59) = 1 (GTC) 的订单达到最大年龄,订单被视为过期,经纪人可以选择发送 ExecType(150) = 的 ExecutionReport(35=8) C(已过期)和 OrdStatus(39) = C(已过期)。
,截止日期(即 tag 59=6
)带有条件 tag 432
。意思是,如果您从今天的日期起 59=6
,432=90
天发送新订单单,那么我们的订单将在订单簿中,直到第 90 天的 EOD。在 EOD 您的订单将过期。
如果您希望在第 90 天的下午 1 点之前保持订单有效,请使用标签 126=Expirytime
(UTC 时间)和标签 59=6
。因此您的订单将在下午 1 点到期,状态为 150=C
和 39=C
。