<code>您好。我们用 TqSdk(3.9.1)的 1 分钟 K 线做回测,实盘用 CTP tick 自己合成 1 分钟 K 线, 需要两边口径一致。关于郑商所夜盘品种日盘第一根 K 线(09:00)的开盘价,想向官方确认规则。 一、现象 用 api.get_kline_serial(symbol, 60, data_length=10000) 取 2026-09-08 至 10-28, 统计"夜盘之后 09:00 那根的 open == 前一根(22:59)的 close"的次数: CZCE.MA701 28/28 CZCE.SA701 28/28 CZCE.OI701 26/28 CZCE.PX611 / PX612 25/28、25/28 CZCE.SH611 / SH612 27/28、23/28 KQ.i@CZCE.MA / OI / PX 1/28、2/28、1/28 (指数基本不相等) SHFE.au2612 0/17 (上期所对照) 对照同期 CTP 原始 tick:郑商所夜盘品种在日盘开盘前没有集合竞价成交;08:55–08:58 会推一串快照, 成交量不变、最新价 = 夜盘收盘价;第一笔成交在 09:00:00。 例 1 CZCE.MA701,2026-10-26 08:55:00–08:58:43 快照,最新价 3389(= 10-23 夜盘收盘),累计量 1810798 不变 09:00:00 第一笔成交 3347(累计量 1813713) TqSdk 09:00 那根 open = 3389,high = 3389 例 2 CZCE.MA701,2026-10-28 08:59:00 一笔快照 3378(累计量不变,= 夜盘收盘) 09:00:00 第一笔成交 3383 TqSdk 09:00 那根 open = 3378,low = 3378 例 3(对照) CZCE.SH611,2026-10-22 这天 CTP 没有收到任何盘前快照,第一笔就是 09:00:00 成交 1770(夜盘收盘 1769) TqSdk 09:00 那根 open = 1770 另外两点: - 夜盘 21:00 那根的 open 是集合竞价成交价,20:55–20:58 的推送没有进 K 线; - 指数 KQ.i@CZCE.* 的 09:00 open 来自开盘成交,不受影响。 二、想确认的问题 1. 1 分钟 K 线的 open 是否就是"该周期内收到的第一笔 tick 的最新价"? 09:00 之前(08:55–08:59)推送的、成交量没有变化的快照,是否会并入日盘第一根 K 线? 2. 郑商所夜盘品种 09:00 那根的 open 因此等于夜盘收盘价,而不是日盘任何一笔成交价。 这是有意的口径,还是盘前快照恰好被计入了? 3. 夜盘 21:00 那根没有用 20:55–20:58 的推送,规则是什么? 是否"当日累计成交量为 0 的 tick 不参与 K 线"? 4. 指数 KQ.i 在盘前不出 tick、09:00 的 open 来自开盘成交,这个理解对吗? 5. 历史 K 线(get_kline_serial / 数据下载)和盘中实时生成的 K 线,在这一点上是否同一口径? 今后是否有调整计划? 我们需要按官方口径对齐实盘的合成逻辑,如能告知具体规则,非常感谢。by ai.</code>
您好,先说明一下郑商所开盘前的特殊行情推送:对于正常有夜盘的品种,日盘开盘前可能收到买一、卖一等盘口更新,但 Tick 中的最新价仍沿用上一夜盘收盘价,累计成交量没有增加。这些推送不代表日盘已经发生新的成交。
针对您的问题,逐项说明如下:
-
open 来自 Tick 里的最新价,盘前成交量没有变化的快照也会参与日盘首根 K 线的合成。
-
同第 1 点,与郑商所的行情规则有关。
-
我们按交易所推送的行情内容转发 Tick。对于正常有夜盘的郑商所品种,夜盘开盘前进行集合竞价,申报阶段尚未产生成交,21:00 K 线的 open 采用集合竞价产生的成交价;日盘开盘前只接受撤单、不再进行集合竞价,盘前行情的最新价仍沿用夜盘收盘价,因此两者表现不同。
-
KQ.i@CZCE.MA盘前没有指数 Tick,09:00 分钟线的 open 来自开盘后首条指数行情的最新价。 -
历史下载的 K 线与盘中实时生成的 K 线采用相同的合成规则,口径一致。
关于快期/天勤 K 线的合成方式,也可以参考官方说明:《为什么我们的 K 线不一样?》。文中介绍了 Tick 快照的含义、连续交易时段内 K 线边界的处理,以及无成交分钟的补齐规则,方便您对齐自行合成 K 线的逻辑。
有其他问题欢迎加入官方Q群748265037一起交流