国庆七天,A股停市、港股交易、非农发布:你的多市场行情监控还在用一套日历吗?

TickDB Research ·

大多数人以为国庆对量化是"没行情"。A 股停 7 天,港股基本全开,美股全程正常,外汇照跑,看起来是个淡季。

其实它是全年唯一一个四个市场同时处于四种不同状态的连续窗口。这才是最容易暴露状态管理设计缺陷的七天。不是因为行情大,是因为状态多。

这篇文章的结构:

第一层  拆词        "市场开市"为什么不是一个布尔值
第二层  逐维拆解    四个维度,每个维度一层
第三层  完整拆解    国庆七天,四市场四状态对照
第四层  判断骨架    最小判断逻辑 + 自建成本
第五层  场景落地    非农那天的跨市场状态判断

你如果只跑 A 股单市场,第一层和第四层对你没用,可以直接跳到第三层。


第一层:拆词——"市场开市"不是一个布尔值

几年前我维护过一套简单的多市场监控。逻辑很朴素:

if weekday in [0,1,2,3,4] and 9 <= hour <= 16:
    is_trading = True

这套逻辑在 A 股单一市场跑了大半年没出问题。直到有一次国庆后回来,我发现系统日志里有一段静默——从节前最后一天收盘到节后第一天开盘,中间几天没有任何输出。当时以为是断网了,查了半天,没找到原因。

后来坐下来重新对了一遍各市场的规则,才发现问题不在网络。是我自己把"市场开市"当成了一个布尔值。

它至少是四个维度的叠加:

交易日状态  →  今天是不是交易日?
交易时段状态 →  现在处于哪个时段?
通道状态    →  准入通道开不开?
连接状态    →  数据连接和订阅是否存活?

四个维度里,我当时只判断了第一个,而且还判断错了——用"工作日"代替了"交易日"。10 月 1 日到 7 日是工作日,但不是交易日。

多市场行情监控中的"市场状态",至少包含四个维度:交易日状态、交易时段状态、通道状态、连接状态。只判断第一个维度,是多数系统的默认缺陷。

下面逐层拆。


第二层:逐维拆解

维度一:交易日——今天是不是交易日

核心判断:交易日不等于工作日。

10 月 1 日到 10 月 7 日,除周末外都是工作日,但这 7 天里 A 股全部休市。如果你在回测框架里用 date.today() - timedelta(days=N) 来算移动平均窗口,这 7 天会被当作有效数据日计入。

20 日窗口,国庆前后实际只覆盖 13 个交易日
→ 均线被休市日稀释
→ 交叉信号触发时间系统性偏移
→ 回测里的信号,在真实交易日序列上不会出现

我自己踩过这个坑。更隐蔽的代价是认知层面的:你不会在信号出错的第一时间怀疑日历。你会怀疑策略参数、怀疑因子有效性、怀疑市场结构变了。排查一圈,最后才回到数据层。这个顺序本身就是成本。

国庆场景

市场10/110/2–10/710/8
A 股休市休市开盘
港股休市正常正常

中国创盈市场服务有限公司在 2026 年 9 月 17 日的通知里写得很清楚:深港通下港股通 10 月 1 日至 10 月 7 日不提供服务,10 月 8 日起照常开通。中国投资信息有限公司发布的 2026 年沪港通全年安排通知,国庆部分口径一致。

用工作日判断交易日,是回测的第一个陷阱。国庆七天是全年最大的暴露窗口。


维度二:交易时段——现在处于哪个时段

核心判断:交易时段不等于 09:30–16:00。

我原来以为这是常识。后来查了一些官方规则文本,发现连"盘后几点开始"都不是一个单一事实。

来源盘后起始时间备注
纳斯达克规则文本"4:00 或 4:15"保留两个起点
NYSE Crossing Session I4:15以收盘价执行单股票交叉
NYSE Crossing Session II4:00组合交易,机制不同
行业通说16:00简化表述,非唯一制度文本

这两个来源都是 B 级——来自规则文本的搜索摘要,我没有拿到官网原文链接。具体规则编号需要以官方为准。但方向是清楚的:"盘后"这个词本身就不是一个精确的时间点。

代价是什么? 如果你把盘前价格当作开盘价来处理,你的"开盘信号"在真实交易中根本没有对应的成交窗口。盘前流动性低、点差大,那个价格在实盘中可能只有很小的量能支撑。回测里看起来很美的开盘突破策略,实盘时连第一步都执行不了。

国庆场景:10 月 2 日美国非农数据发布,美东时间上午 8:30,北京时间 20:30。

A 股  →  休市
港股  →  下午盘,正在交易
美股  →  盘前,数据发布后的第一反应在这里
外汇  →  伦敦-纽约重叠时段,流动性最高

四个市场,四种时段状态。如果你的系统只会判断"今天是不是交易日",它不知道非农发布的那一刻,哪些市场正在活跃。

交易时段不是布尔值。连"什么时候开始"都不是单一事实。


维度三:通道状态——准入通道开不开

核心判断:市场开市,不等于你可以交易。

这是四个维度里最容易被忽略的一个,因为它不体现在行情数据里。

国庆期间的状态错位:

港股市场  →  10/2、10/5、10/6、10/7 正常交易(4 个交易日)
港股通    →  10/1–10/7 全程暂停,10/8 恢复

也就是说:港股在动,但你通过港股通买不了。

如果你用"港股通是否开通"来判断"港股是否可交易",这 4 个交易日你会错误地认为港股不可交易,漏掉全部数据。

反过来也有问题。 2020 年重阳节:港股 10 月 26 日休市一天,但北向沪股通、深股通从 10 月 23 日就开始暂停,10 月 26 日南向港股通暂停,10 月 27 日恢复。

通道暂停区间可以早于市场休市区间
通道暂停区间也可以晚于市场休市区间
两者不是包含关系,是两个独立维度

代价不只是漏掉 4 天数据。 代价是你的策略样本集在整个国庆期间少了一大块,但你不知道。你以为港股停了,所以没有信号是正常的。实际上港股在正常交易,只是你看不到。而当你 10 月 8 日发现港股通恢复、想补上这段数据做验证时,你会发现这 4 天的港股行情你根本没有采集——因为你的系统在 10 月 2 日就把它静默了。

"港股开市"不能推出"港股通可交易"。通道状态是独立维度,必须单独建模。


维度四:连接状态——订阅是否存活

核心判断:心跳没断,不等于订阅还在。

这是四个维度里最深的一层,也是我最近才想明白的。

WebSocket 连接有两个层面:

连接层保活    ← 心跳包解决
会话层订阅    ← 心跳包不解决

心跳包让 TCP 连接不被防火墙断开,让服务端知道你还在线。但它不保证订阅关系还在。

香港交易所的 OMD-C Binary Protocol 规范里写得很清楚:断线后需要等待 SendKey(1105) 消息后重新登录。会话是通过优雅关闭 TCP/IP 连接来终止的。连接断开后,订阅关系可能已经失效,客户端需要重新建立连接并重新订阅。

需要说明:这是 Binary Protocol 规范,不是 WebSocket 规范,具体到 WebSocket 需要以各交易所官方文档为准。但会话管理的逻辑是相通的——连接存活和订阅存活是两件事。

国庆场景:你对一个停市市场的 WebSocket 订阅,假期里应该怎么处理?

方案 A:断开连接
方案 B:保留心跳
方案 C:保留心跳 + 定期重订

如果保留心跳但会话在某个时刻结束了,订阅可能已经被清除,而你的系统以为还连着。

10 月 8 日开盘,你的订阅已经失效,但日志里没有报错。系统静默。

这就是开头那个"日志里一段静默"的真正来源。 我当年以为是网络问题,后来才明白,是连接状态和订阅状态在我不知道的地方分了家。

WebSocket 心跳只解决连接保活,不自动维持业务订阅。这是国庆期间最容易暴露、也最难排查的问题。


第三层:国庆七天的完整状态拆解

把四个维度叠在一起看 2026 年国庆:

日期A股港股市场港股通美股外汇
10/1 周四休市休市暂停正常24/5
10/2 周五休市正常暂停正常24/5
10/5 周一休市正常暂停正常24/5
10/6 周二休市正常暂停正常24/5
10/7 周三休市正常暂停正常24/5
10/8 周四开盘正常恢复正常24/5

这张表的正确读法不是"谁停得久",是"如果你只判断了交易日维度,你在哪几天、哪个市场上会出错"。

10/2–10/7  港股正常交易,但港股通暂停
           → 用"中国假期"覆盖所有中文市场,会错误停掉港股管道

10/2 非农   A股休市、港股下午盘、美股盘前、外汇重叠
           → 系统能不能区分四种状态?

证据来源说明:港股通安排来自中国创盈市场服务有限公司 2026 年 9 月 17 日通知、中国投资信息有限公司 2026 年沪港通全年安排通知。港股市场在 10/2 至 10/7 的开市状态,当前没有港交所官方来源,按港股交易日历惯例推断,以港交所官方公告为准。美股和外汇按市场规则常态运行。


第四层:一个最小的判断骨架,以及自建它需要多少成本

如果你想把四个维度写进代码,顺序是这样的:

Step 1  查交易日    → 今天是不是交易日?按市场分开查
Step 2  查交易时段  → 现在处于哪个时段?
Step 3  查通道状态  → 准入通道开不开?
Step 4  查连接状态  → 订阅是否存活?

四个维度都通过 → 才发起行情请求

这个骨架看起来简单,但自建的成本不在第一行代码,在持续维护。我后来算过一笔账:

维护项为什么不是一次性的频率
交易日历各市场节假日、调休、半日市、临时休市,四套日历分别维护每年
通道状态港股通暂停/恢复由内地和香港两地机构分别发布,不在标准日历里每次公告
WebSocket 会话心跳超时、会话结束、密钥过期,三种情况处理方式不同持续

这三样加起来,是一次性写完就结束的工作吗?不是。它是每年都要重新对一遍的持续性成本。

我现在用 TickDB 的 /market/trade-days 和 /market/trading-sessions 接口来做前两步的按需查询。

TickDB 为开发者和 AI 应用提供统一的全球行情数据接口,让团队通过一套接入获取多市场实时与历史数据,更快构建行情、分析和监控产品。

它的价值不在于"有这两个接口",在于多市场统一——一套接口覆盖 A 股、港股、美股、外汇,不需要为每个市场单独维护数据源和字段对应。

这两步都是 REST 按需查询,返回的是某一时刻的市场状态快照,不是持续推送的实时流。如果需要逐 tick 的实时数据,那是另一个通道(WebSocket)的事。两条通道解决不同问题,不能混着说。


第五层:非农那天的场景

10 月 2 日,北京时间 20:30,美国非农数据发布。

A 股  →  休市,不需要任何数据
港股  →  下午盘,正在交易
美股  →  盘前,第一反应在这里
外汇  →  伦敦-纽约重叠,流动性最高

一个多市场监控产品,能不能区分"这个市场今天不需要关注"和"这个市场正在发生大事件"?

如果你的系统因为"中国假期"把整个中文相关市场一起静默,你会漏掉港股和外汇在这一天的真实反应。而美股盘前的反应,你的系统可能根本没有覆盖——因为你的"交易时段"判断里只写了 09:30–16:00。

这不是数据问题。数据都在那里。这是状态设计问题。

证据说明:非农发布时间基于 BLS 官方发布日程页面(https://www.bls.gov/schedule/news_release/empsit.htm)的惯例推导——每月第一个星期五,美东时间上午 8:30。2026 年 10 月 2 日为当月第一个星期五。具体日期以 BLS 官方日程页面为准。


你的系统用了几层?

SEC 在营销规则(17 CFR 275.206(4)-1(e)(8))里,专门把回测业绩纳入"假设性业绩"的定义,要求披露后见之明偏差和局限性。这不是我个人的工程洁癖,是监管层面已经明确要求披露的问题。

而状态感知缺失,恰恰是后见之明偏差的一个来源:你的回测在错误的市场状态下运行,产生了在真实交易中不可能出现的信号,然后你把这个结果当作策略依据。

你的系统判断"市场开市"用了几层?如果只有一层,国庆七天是检验它的最好窗口。

一个可以立刻做的事:

把你系统里所有硬编码的时间判断列出来:

"09:30–16:00 等于交易中"
"周一至周五等于交易日"
"中国假期等于所有中文市场停市"

逐个对照各市场官方交易日历。不需要写新代码,先把它们列出来。

你可能会发现,有些判断你从来没写下来过,它们藏在某次随口加的 if 语句里。


FAQ

Q1:2026 年国庆 A 股休市几天?

A:2026 年 10 月 1 日(周四)至 10 月 7 日(周三)休市,共 7 个自然日,10 月 8 日(周四)开盘。这 7 天里除周末外都是工作日,但不是交易日。

Q2:2026 年国庆港股正常交易吗?

A:港股在 10 月 1 日休市,10 月 2 日、10 月 5 日至 7 日正常交易。港股市场本身在国庆期间只有 10 月 1 日一天休市。注意:港股市场状态和港股通状态是两回事(见 Q3)。

Q3:2026 年国庆港股通什么时候暂停?

A:根据中国创盈市场服务有限公司 2026 年 9 月 17 日通知,深港通下港股通 10 月 1 日至 10 月 7 日不提供服务,10 月 8 日起照常开通。中国投资信息有限公司发布的 2026 年沪港通全年安排通知口径一致。这意味着 10 月 2 日至 7 日港股正常交易,但通过港股通买不了。

Q4:交易日和工作日的区别是什么?

A:工作日是周一至周五(除法定节假日调休),交易日是该市场实际开市交易的日子。10 月 1 日至 7 日是工作日,但不是 A 股交易日。用工作日代替交易日做回测窗口计算,会引入非交易日空值或错误填充。

Q5:多市场行情监控怎么处理国庆休市?

A:至少判断四个维度:交易日(今天是否开市)、交易时段(现在处于哪个时段)、通道状态(准入通道是否开通)、连接状态(数据订阅是否存活)。只判断交易日维度,会漏掉港股通暂停、美股盘前、WebSocket 订阅失效等问题。

Q6:REST API 和 WebSocket 在多市场监控里有什么区别?

A:REST API 返回的是某一时刻的行情快照,适合按需查询(如"今天这个市场开不开");WebSocket 返回的是持续推送的实时数据流,适合实时监控产品。两条通道解决不同问题,不能混用。用 REST 做实时监控、用 WebSocket 做历史查询,都是错配。

Q7:WebSocket 心跳没断,为什么订阅可能已经失效?

A:WebSocket 连接有两个层面:连接层保活(心跳包解决)和会话层订阅有效性(心跳包不解决)。心跳包让 TCP 连接不被防火墙断开,但会话结束后订阅关系可能已被清除。香港交易所 OMD-C Binary Protocol 规范明确:断线后需等待 SendKey(1105) 消息重新登录。连接存活和订阅存活是两件事。

Q8:2026 年 10 月 2 日非农数据几点发布?

A:美东时间上午 8:30,北京时间 20:30。2026 年 10 月 2 日处于美国夏令时期间。发布时间基于 BLS 官方发布日程页面的惯例——每月第一个星期五,美东时间上午 8:30。具体日期以 BLS 官方日程页面为准。

Q9:国庆期间外汇市场正常交易吗?

A:外汇是 24/5 市场,国庆期间全程运行。但外汇市场没有单一权威机构定义的"收盘时间"——BIS 不定义收盘时间,FX Global Code 不定义截止时间,CLS 定义的是结算截止时间(纽约时间 12:00)。不同来源对周五收盘时间的说法存在差异,监控系统不能硬编码单一时间。

Q10:自建多市场交易日历的成本有多高?

A:成本不在第一行代码,在持续维护。交易日历需要按市场分开维护(A 股、港股、美股、外汇各一套),每年节假日安排调整都要跟进;通道状态(如港股通暂停/恢复)由不同机构分别发布,不在标准交易日历里;WebSocket 会话管理需要处理重连、注销、重订的完整逻辑。这是一项每年都要重新对一遍的持续性成本。


参考来源

本文引用的来源按权威等级排列。A 级为可直接引用的官方规则或监管文件,B 级为需条件化引用的行业文档或规则文本,C 级为国际组织报告。

A 级来源

来源内容时间引用位置
中国创盈市场服务有限公司《关于深港通下港股通交易日安排的通知》深港通下港股通 2026 年国庆期间 10 月 1 日至 7 日不提供服务,10 月 8 日恢复2026-09-17维度一、维度三、FAQ Q3
中国投资信息有限公司《关于 2026 年沪港通下港股通交易日安排的通知》沪港通下港股通 2026 年全年交易日安排,国庆部分口径与深港通一致2025-12-22维度一、维度三、FAQ Q3
SEC Marketing Rule(17 CFR 275.206(4)-1(e)(8))将 backtested performance 纳入 hypothetical performance 定义,要求披露后见之明偏差和局限性2020 年通过,2022-11-04 合规日期结尾段
香港交易所 OMD-C Binary Protocol 规范会话管理机制:30 秒心跳间隔、5 秒响应超时、断线后等待 SendKey(1105) 重新登录未标注具体版本维度四、FAQ Q7

B 级来源

来源内容时间引用位置
纳斯达克盘前盘后规则文本(搜索摘要)盘后时段定义为"4:00 或 4:15 开始";盘前 4:00–9:30未标注具体版本维度二
NYSE Crossing Session I/II 历史规则(搜索摘要)Crossing Session I:4:15–5:00,以收盘价执行单股票交叉;Crossing Session II:4:00 起,组合交易历史规则,部分已修订维度二
BLS 官方发布日程页面就业状况报告发布日程,每月第一个星期五上午 8:30 ET持续更新维度二、第五层、FAQ Q8

C 级来源

来源内容时间引用位置
BIS 三年期调查相关文件调查目的为衡量外汇市场规模和结构,不定义市场收盘时间2025 年调查(最新一期)FAQ Q9
FX Global Code外汇市场良好实践准则,不定义交易截止时间2017 年首版,持续更新FAQ Q9
CLS 结算系统运营说明最终支付截止时间:纽约时间 12:00(EUR、CHF、GBP、USD、CAD)持续更新FAQ Q9

说明:本文中标注为 B 级的来源,来自规则文本的搜索摘要,未获取官网原文链接,具体规则编号以官方为准。标注为 C 级的来源,来自国际组织报告的搜索摘要,未获取完整原文。港股市场在 10/2 至 10/7 的开市状态,当前没有港交所官方来源,按港股交易日历惯例推断,以港交所官方公告为准。

相关文章

A股休市10天,港股跌了,美联储还要开会,APEC即将落地深圳——8号开盘,你盘清楚了几件事?

后天开盘。10月8日,A股恢复交易。你手里的A股仓位,价格停在9月30日;但如果你同时持有港股、美股、QDII,这10天它们一直在动——港股10月2日就开盘了,美股全程正常交易。 这篇文章要说的不是“A股休市了”。有仓位的人都知道A股休市。它要说的是: 同一段时间里,你的三个市场仓位在动,你的信息却只跟得上一个。 核心概念是 信息时态差 ——港股和美股的信息是连续的,每天有K线;A股的信息是…

TickDB Research ·

A股日内策略数据缺口:集合竞价K线拼法,同花顺/通达信/TickDB对比,量比第一根Bar就错了

如果你用Python拉过A股1分钟K线、算过量比因子、跑过开盘段策略——下面这个坑,我大概率不是唯一踩过的人。 拉K线、算量比、跑回测、曲线好看、上实盘、信号失灵。我最近又走了一遍这个循环。一开始怀疑策略逻辑,改了几版参数,回测还是好看,实盘还是失灵。后来换了个方向查——不查策略,查数据。问题出在9:30那根K线上。 你的量比因子,可能从第一根K线就已经算错了——而你的回测结果,恰好证明了它“有效

TickDB Research ·

2026年A股数据API怎么选?免费、开源和专业数据源对比,附真实调用

2026年A股数据API怎么选?免费、开源和专业数据源对比,附真实调用 免费 A 股数据接口能不能用?能。 但原型跑起来以后,麻烦往往才刚开始:数据要每天更新、代码要交给同事、接口突然报错,或者想接进自己的工具。这时只看“免费”就不够了。 先给答案 - 只是拉历史数据、学 Python:先用开源或免费路径,别急着把一堆接口都接上。 - 想把任务固定每天跑:先拿一个标的、一个周期跑通,再看权限、字段

TickDB Research ·

AI量化研究怎么做才可复跑?用 Codex 接入金融行情数据API跑一遍

AI量化研究怎么做才可复跑?用 Codex 接入金融行情数据API跑一遍 周日晚上,你让 Codex 写完研究脚本,回测曲线也出来了。你以为省下的是编码时间。 真正危险的是,它安静地跑完了。几天后结果异常,你却没有留下请求参数、原始返回和运行环境:此时根本分不清该推翻策略、重写代码,还是先怀疑数据。 代码能跑,不等于研究链成立。 这篇不比较 AI 工具,也不讨论策略好坏。只跑一条最小闭环:用 Co

TickDB Research ·

股票数据接口怎么选:同时做A股、美股、港股,该接一家还是三家?

股票数据接口怎么选:同时做A股、美股、港股,该接一家还是三家? 你已经跑通A股,周末准备接入美股和港股。三个市场都返回了最新价,回测和监控接上后却可能发现代码、交易日、交易时段对不上,映射、清洗和研究流程都要返工。股票数据接口选错,最直接的损失是时间。 结论:基础行情先验证统一入口,专项缺口再加数据源。TickDB在本轮用于验证同一入口能否完成A股、美股、港股的标的识别、当前与历史行情、交易日和交

TickDB Research ·