今天美股开市吗?交易时间与假日查询
查询美国股市今天是否开市、当前交易状态、今日市场日历和未来假日,并了解休市期间下单会发生什么,快速确认交易安排。
美国股市周一至周五东部时间上午 9:30 至下午 4:00 开市,但预定假日和少数下午 1:00 提前收市日除外。因此,“今天股市开市吗?”可以归结为三项检查:今天是否为工作日,是否在假日日历中,以及当前处于交易时段的哪个时间点。本页面每次刷新都会根据交易所实时记录完成这三项检查,上方的“数据截至”时间戳用于说明数据的新鲜度。逐个交易时段查看时钟,请参阅 股市交易时间;查看完整日历,请参阅 市场假日和提前收市日。
股市现在开盘吗?
下方的面板会根据本页面数据上次刷新的时点计算答案。它会检查星期几,从交易所假日数据源查询今天的日期,并判断东部时间是否处于官方交易时段内:盘前交易时段从凌晨 4:00 开始,常规交易时段从上午 9:30 开始,盘后交易时段从收盘持续至晚上 8:00。
| 检查日期 | 星期 | 检查时间(美国东部时间) | 今日日历 | 市场状态 | 下一正常交易时段 | 距下一交易日天数 |
|---|---|---|---|---|---|---|
| 2026-09-04 | Friday | 09:00 | normal weekday | PREMARKET | 2026-09-04 | 0 |
每个数字背后的完整 SQL
WITH
toTimeZone(now(), 'America/New_York') AS now_et,
toDate(now_et) AS today_et,
toHour(now_et) * 60 + toMinute(now_et) AS min_now,
(SELECT countDistinct(date) FROM global_markets.stocks_market_holidays
WHERE date = toDate(toTimeZone(now(), 'America/New_York')) AND status = 'closed') AS today_full_holiday,
(SELECT countDistinct(date) FROM global_markets.stocks_market_holidays
WHERE date = toDate(toTimeZone(now(), 'America/New_York')) AND status = 'early-close') AS today_early,
(SELECT any(name) FROM global_markets.stocks_market_holidays
WHERE date = toDate(toTimeZone(now(), 'America/New_York'))) AS today_holiday_name,
if(today_early = 1, 780, 960) AS close_min,
if(today_early = 1, 1020, 1200) AS after_hours_end,
(SELECT min(d) FROM (SELECT toDate(toTimeZone(now(), 'America/New_York')) + arrayJoin(range(1, 11)) AS d)
WHERE toDayOfWeek(d) <= 5
AND d NOT IN (SELECT date FROM global_markets.stocks_market_holidays WHERE status = 'closed')) AS next_sess_after_today,
toDayOfWeek(today_et) <= 5 AND today_full_holiday = 0 AS today_is_session
SELECT
toString(today_et) AS date_checked,
formatDateTime(today_et, '%W') AS weekday,
formatDateTime(now_et, '%H:%i') AS time_checked_et,
multiIf(toDayOfWeek(today_et) >= 6, 'weekend',
today_full_holiday = 1, concat('holiday — ', today_holiday_name),
today_early = 1, concat('early close (1:00 pm) — ', today_holiday_name),
'normal weekday') AS todays_calendar,
multiIf(NOT today_is_session, 'CLOSED',
min_now < 240, 'CLOSED (overnight)',
min_now < 570, 'PREMARKET',
min_now < close_min, 'OPEN',
min_now < after_hours_end, 'AFTER-HOURS',
'CLOSED (overnight)') AS market_status,
toString(if(today_is_session AND min_now < close_min, today_et, next_sess_after_today)) AS next_regular_session,
dateDiff('day', today_et, if(today_is_session AND min_now < close_min, today_et, next_sess_after_today)) AS days_to_next_session截至 09:00 ET、Friday 2026-09-04,计算出的状态为 PREMARKET,今天的日历记录为“normal weekday”。按日程安排,下一次常规交易时段开盘时间为 2026-09-04;如果当前状态为 PREMARKET 或 OPEN,则下一次开盘就是今天。该日期已排除周末和所有全天休市假日。即使遇到较长的假日周末,日期也不会超过几天后。您是在上述时间戳之后阅读本文吗?手动完成同样的三项检查只需几秒:星期几、下方的假日表,以及 ET 时钟。
下一次计划停市及其后续安排
未来日历直接来自交易所数据源。需要注意的一点是:如果今天是节假日或提前收市日,表格会包含今天。查询范围是从今天起的所有停市日,而不是严格晚于今天的停市日。因此,在节假日早晨,第一行与上方的状态面板会显示一致的信息。
| 休市日期 | 日期为 | 节假日 | 日期状态 | 收市时间(美国东部时间) | 相差天数 |
|---|---|---|---|---|---|
| 2026-09-07 | Mon | Labor Day | closed | 3 | |
| 2026-11-26 | Thu | Thanksgiving | closed | 83 | |
| 2026-11-27 | Fri | Thanksgiving | early-close | 13:00 | 84 |
| 2026-12-24 | Thu | Christmas | early-close | 13:00 | 111 |
| 2026-12-25 | Fri | Christmas | closed | 112 | |
| 2027-01-01 | Fri | New Years Day | closed | 119 | |
| 2027-01-18 | Mon | Martin Luther King, Jr. Day | closed | 136 | |
| 2027-02-15 | Mon | Washington's Birthday | closed | 164 | |
| 2027-03-26 | Fri | Good Friday | closed | 203 | |
| 2027-05-31 | Mon | Memorial Day | closed | 269 | |
| 2027-06-18 | Fri | Juneteenth | closed | 287 | |
| 2027-07-05 | Mon | Independence Day | closed | 304 |
每个数字背后的完整 SQL
SELECT toString(date) AS closure_date,
formatDateTime(date, '%a') AS falls_on,
any(name) AS holiday,
any(status) AS day_status,
any(if(status = 'early-close', formatDateTime(toTimeZone(close, 'America/New_York'), '%H:%i'), '')) AS closes_at_et,
dateDiff('day', today(), date) AS days_away
FROM global_markets.stocks_market_holidays
WHERE exchange = 'NYSE' AND date >= today()
GROUP BY date
ORDER BY date
LIMIT 16下一次计划停市时间为 Labor Day,日期是 2026-09-07(closed),距刷新时间戳还有 3 天。凡未列入此表的工作日,均为正常的 9:30–4:00 交易时段。提前收市日的常规交易于美东时间下午 1:00 结束,通常集中在感恩节、圣诞节前夕和美国独立日附近;收盘竞价在这些日期仍会进行,只是提前三小时成交。
市场每年休市多少天?
“每年大约九到十个节假日”是常见答案,但本页可以直接统计,而不是估算。交易所数据源只包含尚未到来的休市日,因此已经过去的休市日会从交易记录中恢复:如果某个工作日的 SPY 常规交易时段没有任何分钟线成交记录,则视为全天休市;如果只有约半个交易时段的记录(约 210 根,而不是 390 根),则视为提前收市。
| 类别 | 已过去 | 尚未到来 | 总计 | 日历年 |
|---|---|---|---|---|
| full closure | 7 | 3 | 10 | 2026 |
| early close (1:00 pm) | 0 | 2 | 2 | 2026 |
每个数字背后的完整 SQL
WITH day_bars AS (
SELECT cal.day AS day, ifNull(t.bars, 0) AS bars
FROM (SELECT makeDate(toYear(today()), 1, 1) + arrayJoin(range(370)) AS day) AS cal
LEFT JOIN (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(makeDate(toYear(today()), 1, 1), 'America/New_York')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
) AS t ON t.d = cal.day
WHERE toDayOfWeek(cal.day) BETWEEN 1 AND 5
AND cal.day <= today() - 4
),
past AS (
SELECT countIf(bars = 0) AS past_full, countIf(bars BETWEEN 120 AND 330) AS past_early
FROM day_bars
),
ahead AS (
SELECT countDistinctIf(date, status = 'closed') AS ahead_full,
countDistinctIf(date, status = 'early-close') AS ahead_early
FROM global_markets.stocks_market_holidays
WHERE date > today() - 4 AND toYear(date) = toYear(today())
)
SELECT category, already_passed, still_ahead, already_passed + still_ahead AS total, toString(toYear(today())) AS calendar_year
FROM (
SELECT 'full closure' AS category, past.past_full AS already_passed, ahead.ahead_full AS still_ahead, 1 AS ord FROM past, ahead
UNION ALL
SELECT 'early close (1:00 pm)' AS category, past.past_early AS already_passed, ahead.ahead_early AS still_ahead, 2 AS ord FROM past, ahead
)
ORDER BY ord2026 包含 10 个全天休市日,其中 7 个已经过去,3 个尚未到来;此外还有 2 个安排在下午 1:00 提前收市的交易日,其中 2 个尚未到来。(最近几天内的休市日可能会因交易记录的数据接入延迟,暂时不计入任何一项;下一次刷新后,分类会自动校正。)周末构成其余休市日:从 365 天中减去约 104 个周末日和这些节假日后,每年约有 250 个交易日。
行情记录的凭证:最近一个交易时段
日历说明应该发生什么;行情记录说明实际发生了什么。下方面板提取了我们 SPY 分钟线行情记录中实际观测到的最近一个交易时段、其柱线数量、当天打印的 SPY 期权交易数量,以及回溯行情记录中最近的半日交易时段。
| 最近交易时段 | 星期 | 常规分钟K线 | SPY期权成交笔数(千) | 最近提前收市 | 提前收市K线 |
|---|---|---|---|---|---|
| 2026-09-03 | Thursday | 211 | 1483 | 2026-09-03 | 211 |
每个数字背后的完整 SQL
WITH rth AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 450
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
last_sess AS (
SELECT max(d) AS last_d
FROM rth
WHERE bars >= 120 AND d < toDate(toTimeZone(now(), 'America/New_York'))
),
opt AS (
SELECT round(count() / 1e3, 0) AS spy_option_prints_thousands
FROM global_markets.options_trades
WHERE ticker >= 'O:SPY2' AND ticker < 'O:SPY3'
AND sip_timestamp >= toDateTime((SELECT last_d FROM last_sess), 'America/New_York')
AND sip_timestamp < toDateTime((SELECT last_d FROM last_sess) + 1, 'America/New_York')
),
last_early AS (
SELECT toString(max(d)) AS last_early_close_date,
argMax(bars, d) AS its_bars
FROM rth WHERE bars BETWEEN 120 AND 330
)
SELECT toString((SELECT last_d FROM last_sess)) AS most_recent_session,
formatDateTime((SELECT last_d FROM last_sess), '%W') AS weekday,
(SELECT bars FROM rth WHERE d = (SELECT last_d FROM last_sess)) AS regular_minute_bars,
(SELECT spy_option_prints_thousands FROM opt) AS spy_option_prints_thousands,
(SELECT last_early_close_date FROM last_early) AS last_early_close,
(SELECT its_bars FROM last_early) AS early_close_bars我们行情记录中的最近一个交易时段是 2026-09-03(Thursday),共打印 211 根常规交易时段分钟线。完整交易日约有 390 根,提前收市日约有 210 根。同一交易时段约有 1483 千笔 SPY 期权交易成交:期权市场遵循股票市场日历,包括节假日和半日交易日;落在休市周五的到期日会提前至前一个交易日。行情记录中最近一次提前收市日为 2026-09-03,共 211 根分钟线,呈现出下午 1:00 收市半日交易的实际形态。需要首先说明的是:该数据仓库存在一至两天的延迟,因此这里的“最近一个交易时段”可能比实际最新交易时段晚一至两天。
市场毫无预警地收盘时
预定休市会列在日历上;非预定休市则不会。此类情况很少见,每十年仅有几次。交易记录会留下痕迹:一个工作日原本应打印 390 根K线,但最终一根都没有。
| 休市日期 | 日期为 | 名称 | SPY常规交易时段K线 |
|---|---|---|---|
| 2012-10-29 | Mon | Hurricane Sandy — day 1 | 0 |
| 2012-10-30 | Tue | Hurricane Sandy — day 2 | 0 |
| 2012-10-31 | Wed | Reopening after Sandy | 390 |
| 2018-12-05 | Wed | Mourning — George H. W. Bush | 0 |
| 2025-01-09 | Thu | Mourning — Jimmy Carter | 0 |
每个数字背后的完整 SQL
WITH events AS (
SELECT arrayJoin([
(toDate('2012-10-29'), 'Hurricane Sandy — day 1'),
(toDate('2012-10-30'), 'Hurricane Sandy — day 2'),
(toDate('2012-10-31'), 'Reopening after Sandy'),
(toDate('2018-12-05'), 'Mourning — George H. W. Bush'),
(toDate('2025-01-09'), 'Mourning — Jimmy Carter')
]) AS e
),
tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND ((window_start >= '2012-10-29 00:00:00' AND window_start < '2012-11-01 12:00:00')
OR (window_start >= '2018-12-05 00:00:00' AND window_start < '2018-12-06 12:00:00')
OR (window_start >= '2025-01-09 00:00:00' AND window_start < '2025-01-10 12:00:00'))
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
)
SELECT toString(e.1) AS closure_date,
formatDateTime(e.1, '%a') AS falls_on,
e.2 AS name,
toUInt32(ifNull(t.bars, 0)) AS spy_regular_session_bars
FROM events
LEFT JOIN tape AS t ON t.d = events.e.1
ORDER BY e.1飓风桑迪导致两大交易所于 2012-10-29 和 2012-10-30 全天休市。这是自 1888 年以来首次因天气连续多日休市。2012-10-31 的复市交易日打印了完整的 390 根K线。美国宣布全国哀悼日时,市场分别于 2018-12-05(乔治·H·W·布什总统)和 2025-01-09(吉米·卡特总统)休市。现代以来最长的非预定休市发生在 2001 年 9 月 11 日至 14 日,连续四个交易日。由于我们的分钟数据始于 2003 年,因此未涵盖这段时期。上述每次休市在交易记录中都显示为 0 根常规交易时段K线:没有任何交易成交。
市场收盘期间下单会发生什么?
市场收盘期间不会执行任何订单。在周六、节假日或凌晨两点提交的订单,只会在您的券商处排队,直到下一交易时段;排队中的市价单将按开盘集合竞价确定的价格成交,而此时距离您点击下单可能已经过去数天。一个交易时段收盘价与下一交易时段首笔成交价之间的跳空,就是您所承担的风险敞口,而且可以量化:
| 之前最近交易时段 | 重新开市时段 | 停市天数 | 停市前收盘价 | 重新开市价 | 跳空幅度(%) |
|---|---|---|---|---|---|
| Fri 2026-06-26 | Mon 2026-06-29 | 3 | 729.09 | 736.52 | 1.02 |
| Thu 2026-07-02 | Mon 2026-07-06 | 4 | 744.8 | 748.74 | 0.53 |
| Fri 2026-07-10 | Mon 2026-07-13 | 3 | 754.9 | 752.47 | -0.32 |
| Fri 2026-07-17 | Mon 2026-07-20 | 3 | 743.2 | 747.06 | 0.52 |
| Fri 2026-07-24 | Mon 2026-07-27 | 3 | 738.85 | 744.91 | 0.82 |
| Fri 2026-07-31 | Mon 2026-08-03 | 3 | 746.81 | 749.44 | 0.35 |
| Fri 2026-08-07 | Mon 2026-08-10 | 3 | 773.2 | 772.6 | -0.08 |
| Fri 2026-08-14 | Mon 2026-08-17 | 3 | 776.3 | 776.18 | -0.02 |
| Fri 2026-08-21 | Mon 2026-08-24 | 3 | 765.69 | 764.78 | -0.12 |
| Fri 2026-08-28 | Mon 2026-08-31 | 3 | 769.34 | 767.33 | -0.26 |
每个数字背后的完整 SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
round(argMin(toFloat64(open), window_start), 2) AS open_px,
round(argMax(toFloat64(close), window_start), 2) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 75
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
paired AS (
SELECT d,
open_px,
lagInFrame(d) OVER (ORDER BY d) AS prev_d,
lagInFrame(close_px) OVER (ORDER BY d) AS prev_close
FROM daily
)
SELECT concat(formatDateTime(prev_d, '%a '), toString(prev_d)) AS last_session_before,
concat(formatDateTime(d, '%a '), toString(d)) AS reopening_session,
dateDiff('day', prev_d, d) AS days_dark,
toString(prev_close) AS close_before_break,
toString(open_px) AS reopening_print,
round((open_px - prev_close) / prev_close * 100, 2) AS gap_pct
FROM paired
WHERE prev_close > 0 AND dateDiff('day', prev_d, d) >= 3
ORDER BY d该表涵盖最近10个周末和长周末,days_dark列标出了四天的节假日休市期。最近一次休市期从Fri 2026-08-28持续至Mon 2026-08-31(共3个自然日休市):SPY在休市前常规交易时段的收盘价为$769.34,重新开市时的首笔成交价为$767.33,两者之间的-0.26%跳空幅度,就是排队中的市价单在未预先确定价格的情况下可能承受的结果。限价单则可以限制成交价格,但也可能无法成交;股票为何会隔夜跳空介绍了这些价格变动背后的机制。
时区、债券市场与世界其他地区
剩余的大部分“是否开市”疑问,主要源于三种错位。时区:官方交易时段采用东部时间。美国东部时间上午9:30相当于太平洋时间上午6:30,也相当于伦敦时间下午2:30(每年大部分时间如此)。市场日期按东部时间计算,因此亚洲读者的“今天”可能横跨美国市场的两个交易时段。债券市场:美国国债按照SIFMA日历交易,而不是纽约证券交易所的日历。它除遵守所有股市假日外,还额外遵守两个假日。其提前收市时间为下午2:00,这是SIFMA的建议安排,出现频率高于股市下午1:00的半日市。全天交易日的差异可从数据中看出:
| 交易时段日期 | 星期 |
|---|---|
| 2025-10-13 | Monday |
| 2025-11-11 | Tuesday |
每个数字背后的完整 SQL
WITH stock_days AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 370
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
HAVING count() >= 100
)
SELECT toString(d) AS session_date,
formatDateTime(d, '%W') AS weekday
FROM stock_days
WHERE d <= (SELECT max(date) FROM global_markets.treasury_yields)
AND d NOT IN (SELECT date FROM global_markets.treasury_yields WHERE date >= today() - 370)
ORDER BY d过去一年中,股票市场有整日交易、但没有任何美国国债收益率成交记录的工作日正好有2个,即2025-10-13和2025-11-11,分别在10月和11月。这两个日期是哥伦布日和退伍军人节,股票市场在这两个联邦假日照常交易。世界其他地区:海外交易所遵循各自的日历,指数期货几乎全天候交易。因此,新闻标题可能在美国东部时间凌晨3:00称“股市正在下跌”,而此时所有美国股票交易所都已收市。每个美国交易时段前后的延长交易时段为美国东部时间凌晨4:00至上午9:30,以及下午4:00至晚上8:00。此时流动性更低,spread更宽;具体机制见延长交易时段指南。
常见问题
现在股市开市吗?
截至本页面最近一次数据刷新时,即 2026-09-04 的 09:00 ET,计算出的状态为 PREMARKET。在该时间点之后,规则很简单:工作日美国东部时间上午 9:30 至下午 4:00,减去上方假日表中的日期。
明天股市开市吗?
除非明天是周六、周日或上方休市表中的日期,否则将是正常交易日。截至本页面刷新时(包括今天),日历上最近的下一个股市开市的常规交易日是 2026-09-04。
圣诞前夕股市开市吗?
如果 12 月 24 日是工作日,美国证券交易所通常会缩短交易时段,并于美国东部时间下午 1:00 收市;如果这一天落在周末,则完全不开市。圣诞节当天始终全天休市;今年的具体日期见上方日历表。
黑色星期五股市开市吗?
开市。感恩节后的星期五是预定的半日交易日:正常交易于美国东部时间下午 1:00 结束,而不是下午 4:00。交易记录上约有 210 根分钟线,而不是 390 根。
今天债券市场开市吗?
通常与股市同步,但并非总是如此。美国国债市场遵循 SIFMA 日历:包括所有股市假日,以及哥伦布日和退伍军人节;提前收市的情况更多,且通常提前至下午 2:00。过去一年的交易记录显示,有 2 个工作日股市有交易,但国债收益率没有成交记录。
上方每个面板都是一个已存储且有版本记录的查询,下方附有其完整 SQL。展开任意面板即可进行审计。如需自行核查任何日期、交易时段或缺口,请在 Strasmore terminal 中用自然语言提问。