AllTick
全球交易员都在“放假”:一文看懂主要交易所法定假日
博客交易假期金融市场数据

全球交易员都在“放假”:一文看懂主要交易所法定假日

了解 2026 年主要交易所的休市安排,掌握全天休市、提前收盘与行情停滞的区别。为金融科技开发者介绍交易日历、REST API 和 WebSocket 的协同使用方式,帮助构建更可靠的多市场行情监控系统。

AllTick阅读 1 分钟

引言:当纽约市场停止交易,其他市场还在运行

对于开发多市场行情看板的金融科技开发者来说,交易所休市有时看起来像是行情数据源出了故障。例如,美国股市行情停止更新,但香港股市仍在正常交易。如果应用程序没有正确识别不同市场的交易时间,用户就可能无法判断:究竟是市场休市,还是系统出现了问题。

了解 2026 年主要交易所的休市安排,有助于开发者为不同市场设置正确的状态提示。本文将介绍主要市场的重要休市日期、官方日历查询渠道,以及如何在实时行情系统中正确处理休市与数据更新问题。

一、为什么交易日历对行情数据系统很重要

交易日历用于判断交易所何时按计划开放。它应与行情监控机制配合使用,而不能取代后者。

开发者需要区分以下三种情况:

  • 全天休市: 交易所当天没有安排常规交易时段。
  • 提前收盘: 交易在正常收盘时间之前结束,应用程序需要相应更新交易状态和预计收盘时间。
  • 交易时段内行情停滞: 市场处于正常交易时段,但某个品种长时间没有收到新行情。这可能与品种活跃度低、数据源异常或网络连接问题有关。

这三种情况需要采用不同的处理方式。如果每当行情停止更新时就自动重连,系统可能产生不必要的请求,并触发错误的故障告警。

此外,还需要区分交易日历与结算日历。交易、清算和结算并不一定遵循完全相同的时间安排。

二、2026 年主要交易所休市日历

以下日期为主要市场的部分参考日期,并非所有交易场所的完整日历。日期和交易时段均以交易所当地时间为准。正式部署生产环境中的交易日历规则前,应通过对应交易所的官方公告确认特殊安排。

市场2026 年主要休市日期官方日历
美国:NYSE、Nasdaq1 月 1 日、1 月 19 日、2 月 16 日、4 月 3 日、5 月 25 日、6 月 19 日、7 月 3 日、9 月 7 日、11 月 26 日、12 月 25 日。Nasdaq 另于 11 月 27 日和 12 月 24 日美国东部时间下午 1 点提前收盘。NYSE 交易时间与假日日历 · Nasdaq 2026 年休市安排
中国大陆:上交所1 月 1—3 日、2 月 15—23 日、4 月 4—6 日、5 月 1—5 日、6 月 19—21 日、9 月 25—27 日、10 月 1—7 日。上交所 2026 年休市安排
中国香港:HKEX 证券市场1 月 1 日、2 月 17—19 日、4 月 3 日、4 月 6—7 日、5 月 1 日、5 月 25 日、6 月 19 日、7 月 1 日、10 月 1 日、10 月 19 日、12 月 25 日。HKEX 2026 年证券市场假日日历
日本:JPX 现货股票市场1 月 1—3 日、1 月 12 日、2 月 11 日和 23 日、3 月 20 日、4 月 29 日、5 月 3—6 日、7 月 20 日、8 月 11 日、9 月 21—23 日、10 月 12 日、11 月 3 日和 23 日、12 月 31 日。JPX 市场休市日历
澳大利亚:ASX 现货市场1 月 1 日、1 月 26 日、4 月 3 日、4 月 6 日、6 月 8 日、12 月 25 日和 12 月 28 日。12 月 24 日提前收盘。ASX 2026 年交易日历

以上日历重点列出了部分主要市场,并未涵盖全球所有交易场所。

例如,印度市场应分别查询对应交易所及交易板块的日历,因为不同市场的休市日期和特别交易时段可能存在差异。

德国的公共假日也不代表所有交易所都会自动休市。开发者应查询 Xetra 交易日历,确认具体交易安排。

三、如何判断行情停止更新的原因

假设一个行情看板同时展示美国和香港股票,而美国市场因节假日休市,香港市场仍然正常交易。

如果系统只使用一个全局市场状态,就可能错误地将美国行情停止更新判断为数据源故障。

更合理的方式是结合三个信息进行判断:

  • 对应交易所的交易日历
  • 数据连接状态
  • 最近一次收到行情的时间

下面是一个简单的 Python 示例,用于演示如何根据这三个条件对行情状态进行分类。

text
def classify_quote(
    market_open: bool,
    connected: bool,
    quote_age_seconds: int,
    stale_after_seconds: int = 60,
) -> str:
    if not market_open:
        return "Market closed"
    if not connected:
        return "Connection issue"
    if quote_age_seconds > stale_after_seconds:
        return "Check data freshness"
    return "Monitoring normally"


print(classify_quote(False, True, 300))
# Market closed

print(classify_quote(True, False, 300))
# Connection issue

print(classify_quote(True, True, 120))
# Check data freshness

print(classify_quote(True, True, 5))
# Monitoring normally

这段代码可以直接运行,但示例参数仅用于演示,并非实际测量结果。默认的 60 秒阈值也不是适用于所有品种和行情源的统一标准,开发者应根据业务需求自行调整。

在生产环境中,交易日历服务还需要正确处理当地时区、夏令时、提前收盘以及交易所特定的交易时段。行情新鲜度阈值则应结合具体品种的活跃程度、数据源特征和应用程序的响应要求来设置。

可以使用以下测试场景检查系统是否正确处理不同状态:

测试场景预期结果
交易所按计划休市显示“市场休市”,不触发常规行情停滞告警
市场开放,但实时连接中断显示“连接异常”,启动连接恢复处理
市场开放,报价长时间未更新显示行情新鲜度警告,并进一步排查
市场开放,报价正常更新正常监控

建议记录每次判断所使用的输入条件和输出结果,以便复现问题并验证系统逻辑。

四、将交易日历接入行情数据工作流

交易日历告诉系统市场何时预计开放,行情数据则反映系统实际收到的数据。可靠的监控机制需要同时考虑这两方面的信息。

在正常交易时段内,WebSocket 可以持续推送行情更新。如果行情推送停止,系统应先检查交易日历和连接状态,再决定是否触发告警。

在支持相应查询的情况下,REST API 可以用于获取最新报价或历史 K 线数据,辅助检查行情状态。但需要注意,WebSocket 暂时没有推送数据,或者单次 REST 请求返回了某个报价,都不足以单独证明交易所已经休市。

AllTick 提供 REST API 和 WebSocket 行情接口。REST API 支持最新行情、K 线和盘口等数据查询,也提供上交所、纽交所和 Nasdaq 相关的交易状态接口,用于查询停牌与复牌信息。

这些接口可以辅助开发者检查具体股票的交易状态,但不能代替完整的交易所节假日日历。

相关文档:

对于需要同时监控多个市场的行情看板,建议将交易所官方日历、WebSocket 行情推送和 REST API 查询结合起来,并针对全天休市、提前收盘和正常交易等场景进行测试,确认界面状态、行情时间戳和告警逻辑均符合预期。

如果你正在开发行情数据功能,可以先根据所需市场和股票品种,查看对应的 AllTick REST API 与 WebSocket 文档,再结合应用程序的监控需求设计交易日历和行情检查机制。这样既能明确数据接口的使用方式,也能让团队自行掌控交易所日历与休市规则。

立即开始接入市场数据

几秒内生成免费 API 密钥,通过一个端点连接所有市场。