2. 沪深市场交易阶段总览
沪深两市的交易并不是一条从早到晚连续不断的行情流,而是由若干时间边界切分出的多个阶段。每个阶段有各自的撮合方式、可申报类型和行情发布节奏。理解这些边界,是正确解读行情快照、判断盘口数据含义的前提。本节先建立一张“时间—阶段—快照”的整体地图,后续章节再逐项深入字段细节。
一、五个阶段与两条市场的时间边界
以沪深交易所现行规则为基准,一个完整交易日可划分为五个阶段:开盘集合竞价、连续竞价、午间休市、收盘集合竞价、盘后固定价格交易。上交所与深交所在部分时点上存在差异,尤其是收盘集合竞价的起止时间与盘后固定价格交易的适用范围,需要分别记忆。
开盘集合竞价阶段,沪深两市均为 9:15 开始接受申报,9:25 集中撮合产生开盘价。其中 9:15—9:20 允许撤单,9:20—9:25 不接受撤单,这一细节直接影响行情中“虚拟撮合量”的可信度。9:25—9:30 沪深两市均不接受申报,但行情系统仍会发布开盘后的参考信息,属于“静默但不空白”的过渡区间。
连续竞价自 9:30 开始,至 11:30 午间休市;下午 13:00 恢复,上交所连续竞价持续到 14:57,深交所持续到 14:57 后进入收盘集合竞价。收盘集合竞价方面,深交所为 14:57—15:00,上交所同样在 14:57—15:00 进行收盘集合竞价。15:00 之后,盘后固定价格交易在 15:05—15:30 进行,目前主要适用于科创板与创业板股票,成交价格固定为当日收盘价。
二、行情快照的触发机制
行情快照并非按固定秒表机械推送,而是由“事件触发 + 周期兜底”共同决定。交易所行情网关在撮合产生成交、订单簿发生显著变化、或到达预设时间间隔时,生成并发布一帧快照。连续竞价期间,沪深两市通常以约 3 秒为周期发布快照,同时叠加逐笔成交与逐笔委托数据;集合竞价期间,快照主要反映虚拟开盘参考价、虚拟匹配量和未匹配量,而不是真实成交。
这意味着同一只股票在不同阶段,快照字段的“语义”会变化。例如集合竞价快照中的“最新价”往往是虚拟参考价,成交量是虚拟匹配量;连续竞价快照中的最新价才是真实成交价。若不加区分地把集合竞价快照当作成交数据使用,就会在回测和盘中监控中产生系统性偏差。
三、从快照字段反推所处阶段
实际开发中,我们常需要仅凭一帧行情快照判断它属于哪个阶段。一个稳妥的做法是组合使用“时间戳 + 字段特征”。时间戳落在 9:15—9:25 且成交量字段表现为虚拟匹配量时,可判定为开盘集合竞价;时间戳在 9:30—11:30 或 13:00—14:57 之间、且逐笔成交持续更新,则为连续竞价;时间戳在 14:57—15:00 且快照中不再出现新的虚拟参考价更新,则为收盘集合竞价。
需要特别提醒的是,午间休市期间行情并不“消失”。交易所通常仍会保留最后一帧快照,部分行情源会以“心跳”形式重复推送同一帧。若程序以“收到新快照”作为交易信号,午休期间可能被重复帧误触发。工程上应显式判断时间窗口,而不是依赖快照是否到达。
四、一个可执行的阶段判定示例
下面给出一个简化的阶段判定逻辑,输入为快照时间戳(HHMMSS 整数)与是否含逐笔成交标志,输出阶段标签。示例参数为教学假设,实际使用时需按交易所最新规则校准边界值。
def judge_phase(hhmmss, has_tick_trade):
if 91500 <= hhmmss < 92500:
return "开盘集合竞价"
if 92500 <= hhmmss < 93000:
return "开盘后静默期"
if (93000 <= hhmmss < 113000) or (130000 <= hhmmss < 145700):
return "连续竞价" if has_tick_trade else "连续竞价(无逐笔)"
if 113000 <= hhmmss < 130000:
return "午间休市"
if 145700 <= hhmmss < 150000:
return "收盘集合竞价"
if 150500 <= hhmmss < 153000:
return "盘后固定价格交易"
return "非交易时段"
用几个示例时间点验证:输入 (92000, False) 返回“开盘集合竞价”;输入 (100000, True) 返回“连续竞价”;输入 (120000, False) 返回“午间休市”;输入 (145800, False) 返回“收盘集合竞价”;输入 (151000, False) 返回“盘后固定价格交易”。若某帧在 10:00 却 has_tick_trade 为 False,则提示行情源可能缺失逐笔数据,应检查订阅通道而非直接采信。
五、阶段边界对行情解读的影响
阶段边界不只是时间标签,它决定了字段的“解释规则”。开盘集合竞价的虚拟匹配量反映的是潜在供需,撤单窗口关闭前后的变化尤其值得关注;连续竞价的快照反映真实撮合结果,适合计算买卖压力;收盘集合竞价不揭示虚拟参考价,因此不能用盘中思路去推测收盘价;盘后固定价格交易以收盘价成交,其行情更多体现为成交量而非价格发现。