全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
关于Order结构体成员orderId订单编号和fillVolume成交量在整个订单状态变化过程中的变化规则
2024-05-12 17:07


下单过程

假设现在报单指令买入11手开多仓,然后监控OnOrder事件域,一旦

ord.status == Enum_Declared

当检测到订单状态为【已申报】后,会得到交易所分配的报单编号,记录为【0号orderId】,由于撮合成交原因,可能不会一次性成交,假设

【第1次】部分成交2手(剩余9手),那么OnOder事件域的状态

ord.status == Enum_FillPart

同时,也会得到一个报单编号,记录为【1号orderId】,此时会得到【1号fillVolume】成交量。

依次......

第2次】部分成交3手(剩余6手),【2号orderId】【2号fillVolume】

ord.status == Enum_Filled

【第3次】全部成交6手,【3号orderId】【3号fillVolume】

问题

  1. 请问【3号orderId】全部成交时的报单编号 与 订单创建申报时的【0号orderId】相同吗?
  2. 请问【0号orderId】和【1号orderId】、【2号orderId】相同吗?如果不同,那么他们之间是否可以通过系统函数追溯关联查找?是哪个系统函数?
  3. 【1号orderId】发生时,【1号fillVolume】应该是【2手】,因为第1次成交,那么【2号orderId】发生时,【2号fillVolume】的值 是当次部分成交的【3手】?还是【0号orderId订单】累计成交的【5手】?因为第3次全部成交了,那么【3号fillVolume】应该是【11手】,这样理解对吗?
  4. 因为【第1次】和【第2次】都是【部分成交】,所以【ord.status == Enum_FillPart】应该歧义不大,关键是【第3次】在【ord.status == Enum_Filled】之前,是否先经过一个【ord.status == Enum_FillPart】部分成交6手,然后状态才快速变为【ord.status == Enum_Filled】?


Phoenix129

重新复习了一下这个视频内容: https://www.tbquant.net/TrainDetail?id=448

(1)【0号orderId】、【1号orderId】、【2号orderId】【3号orderId】应该都是 同一个【orderId】,每次部分成交时,不同的应该是【成交索引】【FillId】

(2)OnOrder事件域,每次部分成交时,【fillVolume】到底是【增量成交量】还是【累计成交量】目前还不知道,但是OnFiill事件域中【fillVolume】是每次部分成交时的【增量成交量】。

这个视频有演示过程: https://www.tbquant.net/TrainDetail?id=449

(3)在【全部成交】之前,到底会不会经过 最后一次【部分成交】目前还不清楚。

2024-05-12 19:33
您未登录,请先 登录注册 后发表评论
顶部