美股交易時間:美東9:30開盤、4:00收盤
NYSE與Nasdaq一般交易時段為美東時間上午9:30至下午4:00,另有凌晨4:00起的盤前交易及延長至晚上8:00的盤後交易,週末休市。
美國股市交易時間為週一至週五美東時間上午9:30至下午4:00。NYSE與Nasdaq均於美東時間上午9:30開啟一般交易,並於下午4:00收市。一般交易時段前後另有兩個延長交易時段:盤前交易自美東時間凌晨4:00開始,盤後交易則持續至晚上8:00。市場週末休市,每年約有十個假日休市。本文所有數字均根據實際成交紀錄計算,每個數字背後的查詢均可透過一個點擊查看。(如需快速瀏覽今日是否開市、下一個休市日及最近交易時段,請參閱今日股市是否開市。)
股票市場何時開盤與收盤?
一般交易時段,也就是報價、指數水準與晚間新聞所描述的時段,從美東時間上午9:30的開盤鐘開始,至美東時間下午4:00的收盤鐘結束。全長6個半小時,每週交易5天。美國兩大上市交易所採用相同的交易時間,而標準券商委託單預設也會在這段期間執行。
完整的電子交易日比開收盤鐘涵蓋的時間更長:
- 盤前交易:美東時間上午4:00至上午9:30,即開盤鐘前的電子交易。
- 一般交易時段:美東時間上午9:30至下午4:00,當日大部分交易在此期間完成。
- 盤後交易:美東時間下午4:00至晚上8:00,即收盤鐘後的電子交易。
一般交易日的前後各有一場競價。開盤競價在上午9:30決定每檔股票的正式開盤價;收盤競價則是在下午4:00過後片刻撮合的一筆大型交易,決定當晚各處引用的正式收盤價。本頁所有時間均以美東時間表示;美國西岸的相同一般交易時段則為上午6:30至下午1:00。
股市交易時段在成交紀錄上呈現什麼樣貌?
定義是一回事;成交紀錄才是證據。下方圖表採用 SPY 成交紀錄中最近一個完整交易日的資料,2026-10-14,也就是一個Wednesday,且是最近一個已經足以完成紀錄的交易日(資料來源通常落後一至兩天)。我們透過計算正常交易時段的每分鐘 K 線加以確認:共有 390 根,每一根代表兩次開收盤鐘聲之間的一分鐘。該交易日的第一根 K 線在美東時間 04:00 成交,最後一根則在 19:59 成交;成交紀錄涵蓋完整的延長交易日,從凌晨4:00至晚上8:00。
| 交易時段日期 | 星期 | 正常交易時段柱數 | 當日首根柱分鐘 | 當日末根柱分鐘 | ET首根柱時間 | ET末根柱時間 | 總股數(百萬) | 盤前百分比 | 正常交易時段百分比 | 收盤後30分鐘百分比 | 晚間百分比 | 前30分鐘百分比 | 最後30分鐘百分比 | 午間半小時百分比 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-10-14 | Wednesday | 390 | 240 | 1199 | 04:00 | 19:59 | 55.7 | 2.6 | 86.2 | 9 | 2.1 | 8.1 | 25.1 | 3.5 |
每個數據背後的精確 SQL 語法
WITH
(
SELECT max(d)
FROM
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960) AS rth_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 21
AND window_start < today() - 2
GROUP BY d
HAVING rth_bars = 390
)
) AS session_day
SELECT
toString(session_day) AS session_date,
formatDateTime(session_day, '%W') AS weekday,
b.regular_session_bars AS regular_session_bars,
b.first_bar_minute_of_day AS first_bar_minute_of_day,
b.last_bar_minute_of_day AS last_bar_minute_of_day,
b.first_bar_et AS first_bar_et,
b.last_bar_et AS last_bar_et,
t.total_shares_m AS total_shares_m,
t.premarket_pct AS premarket_pct,
t.regular_pct AS regular_pct,
t.post_close_30min_pct AS post_close_30min_pct,
t.evening_pct AS evening_pct,
t.first_30min_pct AS first_30min_pct,
t.last_30min_pct AS last_30min_pct,
t.midday_half_hour_pct AS midday_half_hour_pct
FROM
(
SELECT
countIf(et_min >= 570 AND et_min < 960) AS regular_session_bars,
min(et_min) AS first_bar_minute_of_day,
max(et_min) AS last_bar_minute_of_day,
formatDateTime(min(et_ts), '%H:%i') AS first_bar_et,
formatDateTime(max(et_ts), '%H:%i') AS last_bar_et
FROM
(
SELECT
toTimeZone(window_start, 'America/New_York') AS et_ts,
toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) AS et_min
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) = session_day
)
) AS b
CROSS JOIN
(
SELECT
round(sum(shares) / 1e6, 1) AS total_shares_m,
round(100.0 * sumIf(shares, NOT is_close AND et_min < 570) / sum(shares), 1) AS premarket_pct,
round(100.0 * sumIf(shares, is_close OR (et_min >= 570 AND et_min < 960)) / sum(shares), 1) AS regular_pct,
round(100.0 * sumIf(shares, NOT is_close AND et_min >= 960 AND et_min < 990) / sum(shares), 1) AS post_close_30min_pct,
round(100.0 * sumIf(shares, NOT is_close AND et_min >= 990) / sum(shares), 1) AS evening_pct,
round(100.0 * sumIf(shares, NOT is_close AND et_min >= 570 AND et_min < 600) / sum(shares), 1) AS first_30min_pct,
round(100.0 * sumIf(shares, is_close OR (et_min >= 930 AND et_min < 960)) / sum(shares), 1) AS last_30min_pct,
round(100.0 * sumIf(shares, NOT is_close AND et_min >= 750 AND et_min < 780) / sum(shares), 1) AS midday_half_hour_pct
FROM
(
SELECT
toFloat64(size) AS shares,
has(conditions, 8) AS is_close,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_min
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime(session_day, 'America/New_York')
AND sip_timestamp < toDateTime(session_day + 1, 'America/New_York')
AND NOT hasAny(conditions, [15, 16, 38])
)
) AS t成交量分布是重點。這些數據逐筆取自整合成交紀錄,而收盤競價成交也計入其所結束的正常交易時段。在這整整16小時內,共有 55.7 百萬股 SPY 成交,其中正常交易時段占 86.2%。長達五個半小時的盤前交易成交 2.6%。收盤鐘聲後緊接的半小時成交 9%;這段時間會納入交易時段結束後才回報至成交紀錄的大宗協議交易。晚間剩餘三個半小時合計成交 2.1%。
以半小時為區間,可以看出當日的交易形態:
| ET半小時 | 股數(百萬) |
|---|---|
| 04:00 | 0.05 |
| 04:30 | 0.02 |
| 05:00 | 0.01 |
| 05:30 | 0 |
| 06:00 | 0.02 |
| 06:30 | 0.01 |
| 07:00 | 0.05 |
| 07:30 | 0.02 |
| 08:00 | 0.13 |
| 08:30 | 0.83 |
| 09:00 | 0.33 |
| 09:30 | 4.52 |
| 10:00 | 2.77 |
| 10:30 | 2.46 |
| 11:00 | 2.76 |
| 11:30 | 2.16 |
| 12:00 | 2.84 |
| 12:30 | 1.97 |
| 13:00 | 1.97 |
| 13:30 | 3.77 |
每個數據背後的精確 SQL 語法
WITH
(
SELECT max(d)
FROM
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960) AS rth_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 21
AND window_start < today() - 2
GROUP BY d
HAVING rth_bars = 390
)
) AS session_day
SELECT
formatDateTime(toStartOfInterval(if(has(conditions, 8),
toTimeZone(sip_timestamp, 'America/New_York') - INTERVAL 10 MINUTE,
toTimeZone(sip_timestamp, 'America/New_York')),
INTERVAL 30 MINUTE), '%H:%i') AS et_half_hour,
round(sum(toFloat64(size)) / 1e6, 2) AS shares_m
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime(session_day, 'America/New_York')
AND sip_timestamp < toDateTime(session_day + 1, 'America/New_York')
AND NOT hasAny(conditions, [15, 16, 38])
GROUP BY et_half_hour
ORDER BY et_half_hour在這個交易日,包含收盤競價成交在內的最後半小時,占全天成交量 25.1%;相較之下,12:30至1:00的午間半小時占 3.5%,開盤後半小時則占 8.1%。收盤成交量較大的現象有其機械性原因:指數基金、共同基金及以基準指數為投資依據的機構,會按照官方收盤價進行交易,而這些委託單會集中至收盤競價。整體而言,成交量分布在延長交易日的 32 個不同半小時區間內。
什麼是盤前與盤後交易?
盤前交易(美東時間上午4:00至9:30)與盤後交易(美東時間下午4:00至晚上8:00)是正常交易時段前後、僅透過電子系統進行的交易時段。參與者較少,買賣價差較大,多數券商在這些時段也只接受限價單。公司新聞往往集中在這些時段發布:財報通常在下午4:00收市後不久,以及開盤前數小時公布。股票價格可能因此大幅偏離前一交易日的收盤價。晚上7:00成交的價格,並不保證股票隔日上午會以相近價格開盤。
逐時段的成交量占比、實際量測的買賣價差成本,以及新聞標題實際發布的時間,均收錄於本頁的配套文章盤後與盤前交易。簡單而言,上方圖表已清楚顯示:延長交易時段是真實且可交易的市場,但與正常交易日相比,流動性較低。
選擇權與期貨的交易時段為何?
個別公司的選擇權交易時間為美東時間上午9:30至下午4:00,沒有盤前或盤後交易。少數涵蓋大盤的 ETF 與指數產品則多出15分鐘,包括 SPY、QQQ、IWM,以及 SPX、VIX 等指數選擇權,交易至美東時間下午4:15。交易紀錄顯示,2026-10-14呈現了兩者的差異;這是上方所衡量的同一交易時段:
| 合約 | 交易時段日期 | 3:45至4:00交易筆數 | 4:00至4:15交易筆數 | 最後交易ET時間 | 最後交易當日分鐘 |
|---|---|---|---|---|---|
| AAPL options (single name) | 2026-10-14 | 11803 | 3 | 16:00 | 960 |
| SPY options (ETF) | 2026-10-14 | 64434 | 29698 | 16:14 | 974 |
每個數據背後的精確 SQL 語法
WITH
(
SELECT max(d)
FROM
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960) AS rth_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 21
AND window_start < today() - 2
GROUP BY d
HAVING rth_bars = 390
)
) AS session_day
SELECT
if(startsWith(ticker, 'O:SPY'), 'SPY options (ETF)', 'AAPL options (single name)') AS contract,
toString(session_day) AS session_date,
countIf(sip_timestamp >= toDateTime(concat(toString(session_day), ' 15:45:00'), 'America/New_York')
AND sip_timestamp < toDateTime(concat(toString(session_day), ' 16:00:00'), 'America/New_York')) AS trades_345_to_400,
countIf(sip_timestamp >= toDateTime(concat(toString(session_day), ' 16:00:00'), 'America/New_York')
AND sip_timestamp < toDateTime(concat(toString(session_day), ' 16:15:00'), 'America/New_York')) AS trades_400_to_415,
formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%H:%i') AS last_trade_et,
toHour(toTimeZone(max(sip_timestamp), 'America/New_York')) * 60
+ toMinute(toTimeZone(max(sip_timestamp), 'America/New_York')) AS last_trade_minute_of_day
FROM global_markets.options_trades
WHERE (startsWith(ticker, 'O:SPY') OR startsWith(ticker, 'O:AAPL'))
AND match(ticker, '^O:(SPY|AAPL)[0-9]{6}[CP][0-9]{8}$')
AND sip_timestamp >= toDateTime(concat(toString(session_day), ' 15:45:00'), 'America/New_York')
AND sip_timestamp < toDateTime(concat(toString(session_day), ' 23:00:00'), 'America/New_York')
GROUP BY contract
ORDER BY contract一般交易時段的最後15分鐘,兩份交易紀錄都很活躍:AAPL 選擇權成交11803筆,SPY 成交64434筆。收盤鈴響後的15分鐘則呈現差異:AAPL 僅出現3筆零星成交,最後一筆在美東時間16:00成交;SPY 則成交29698筆,最後一筆在美東時間16:14成交。到期日有自己的交易時鐘,0DTE 選擇權何時交易一文將說明相關安排。
期貨的交易時段則完全不同。CME 股價指數期貨幾乎全天交易,從週日美東時間下午6:00至週五下午5:00;每日自下午5:00起暫停一小時。這就是每則「期貨今早上漲」新聞標題背後的隔夜交易紀錄。債券市場採場外交易,交易時間依 SIFMA 建議大致為美東時間上午8:00至下午5:00,並有自己的假日行事曆:股票照常交易時,債券市場會因 Columbus Day 與 Veterans Day 關閉。
股市何時休市?
美國股市週末休市,每年約有十個全天假日,另有幾個預定的半日交易日會提早於美東時間下午1:00收市。下方日曆直接採用交易所公布的交易時程,並會自動更新:每個假日過後便會從日曆中移除,下一個假日則遞補上來。
| 假日日期 | 星期 | 假日 | 交易日狀態 | 提前收盤ET時間 | 相隔天數 |
|---|---|---|---|---|---|
| 2026-11-26 | Thu | Thanksgiving | closed | 40 | |
| 2026-11-27 | Fri | Thanksgiving | early-close | 01:00 PM | 41 |
| 2026-12-24 | Thu | Christmas | early-close | 01:00 PM | 68 |
| 2026-12-25 | Fri | Christmas | closed | 69 | |
| 2027-01-01 | Fri | New Years Day | closed | 76 | |
| 2027-01-18 | Mon | Martin Luther King, Jr. Day | closed | 93 | |
| 2027-02-15 | Mon | Washington's Birthday | closed | 121 | |
| 2027-03-26 | Fri | Good Friday | closed | 160 | |
| 2027-05-31 | Mon | Memorial Day | closed | 226 | |
| 2027-06-18 | Fri | Juneteenth | closed | 244 | |
| 2027-07-05 | Mon | Independence Day | closed | 261 | |
| 2027-09-06 | Mon | Labor Day | closed | 324 |
每個數據背後的精確 SQL 語法
SELECT
toString(date) AS holiday_date,
formatDateTime(date, '%a') AS weekday,
any(name) AS holiday,
any(status) AS day_status,
any(if(status = 'early-close',
formatDateTime(toTimeZone(close, 'America/New_York'), '%I:%i %p'),
'')) AS early_close_et,
dateDiff('day', today(), date) AS days_away
FROM global_markets.stocks_market_holidays
WHERE date >= today()
GROUP BY date
ORDER BY date下一個預定休市日是Thanksgiving,日期為2026-11-26,距今還有40天;載入的日曆列出未來12個有日期的休市日,並逐一標示為全天休市或提早收市。提早收市日的正常交易時段會於美東時間下午1:00結束,而非下午4:00;交易時間為三個半小時,而非六個半小時,收盤競價也會在下午1:00撮合成交。這些半日交易日主要集中在感恩節和聖誕節前後。週末假日的補休日規則(週六假日於前一週五休市,週日假日於下一週一休市)、完整日曆,以及如何從逐筆成交資料查核過去的休市日,請參閱股市假日與提早收市日。
半日交易在成交明細上是什麼樣子?
交易日曆會標示提前收市時間;成交明細則呈現半日交易的實際樣貌。SPY 最近一次半日交易為 2025-12-24,屬於 Wednesday:正常交易時段從上午9:30至下午1:00收市競價,共有 210 根分鐘K線。
| 交易時段日期 | 星期 | 上午交易時段柱數 | ET末根柱時間 | 當日末根柱分鐘 | 總股數(百萬) | 盤前百分比 | 正常交易時段百分比 | 收盤後30分鐘百分比 | 晚間百分比 | 前30分鐘百分比 | 最後30分鐘百分比 | 收盤價減開盤價百分比 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025-12-24 | Wednesday | 210 | 16:59 | 1019 | 39.9 | 1.2 | 89.6 | 7.8 | 1.4 | 10.9 | 24.2 | 13.3 |
每個數據背後的精確 SQL 語法
WITH
(
SELECT max(d)
FROM
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960) AS rth_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 400
AND window_start < today() - 2
GROUP BY d
HAVING rth_bars >= 150 AND rth_bars <= 240
)
) AS half_day
SELECT
toString(half_day) AS session_date,
formatDateTime(half_day, '%W') AS weekday,
b.morning_session_bars AS morning_session_bars,
b.last_bar_et AS last_bar_et,
b.last_bar_minute_of_day AS last_bar_minute_of_day,
t.total_shares_m AS total_shares_m,
t.premarket_pct AS premarket_pct,
t.regular_pct AS regular_pct,
t.post_close_30min_pct AS post_close_30min_pct,
t.evening_pct AS evening_pct,
t.first_30min_pct AS first_30min_pct,
t.last_30min_pct AS last_30min_pct,
round(t.last_30min_pct - t.first_30min_pct, 1) AS close_minus_open_pct
FROM
(
SELECT
countIf(et_min >= 570 AND et_min < 780) AS morning_session_bars,
formatDateTime(max(et_ts), '%H:%i') AS last_bar_et,
max(et_min) AS last_bar_minute_of_day
FROM
(
SELECT
toTimeZone(window_start, 'America/New_York') AS et_ts,
toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) AS et_min
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 400
AND toDate(toTimeZone(window_start, 'America/New_York')) = half_day
)
) AS b
CROSS JOIN
(
SELECT
round(sum(shares) / 1e6, 1) AS total_shares_m,
round(100.0 * sumIf(shares, NOT is_close AND et_min < 570) / sum(shares), 1) AS premarket_pct,
round(100.0 * sumIf(shares, is_close OR (et_min >= 570 AND et_min < 780)) / sum(shares), 1) AS regular_pct,
round(100.0 * sumIf(shares, NOT is_close AND et_min >= 780 AND et_min < 810) / sum(shares), 1) AS post_close_30min_pct,
round(100.0 * sumIf(shares, NOT is_close AND et_min >= 810) / sum(shares), 1) AS evening_pct,
round(100.0 * sumIf(shares, NOT is_close AND et_min >= 570 AND et_min < 600) / sum(shares), 1) AS first_30min_pct,
round(100.0 * sumIf(shares, is_close OR (et_min >= 750 AND et_min < 780)) / sum(shares), 1) AS last_30min_pct
FROM
(
SELECT
toFloat64(size) AS shares,
has(conditions, 8) AS is_close,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_min
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime(half_day, 'America/New_York')
AND sip_timestamp < toDateTime(half_day + 1, 'America/New_York')
AND NOT hasAny(conditions, [15, 16, 38])
)
) AS t完整交易日的形狀在壓縮後仍然保留。在成交的 39.9 百萬股 SPY 中,縮短後的正常交易時段占 89.6%;而收市前最後半小時(包括下午1:00的收市競價)占 24.2%,明顯高於開盤前半小時的 10.9%。這仍呈現正常交易日收市競價成交量集中的特徵,只是整體提前了三小時。收市後半小時成交 7.8%(再次包括大宗交易申報時段),下午其餘時間則僅成交 1.4%。延長交易時段也會提早結束:當日最後一根K線在美東時間 16:59 成交;半日交易的盤後交易約於下午5:00結束,比通常的晚上8:00提前三小時。選擇權也會提前收市:個股選擇權為下午1:00,延長交易 ETF 與指數契約則為下午1:15。
| ET半小時 | 股數(百萬) |
|---|---|
| 04:00 | 0.03 |
| 04:30 | 0 |
| 05:00 | 0.01 |
| 05:30 | 0.01 |
| 06:00 | 0.01 |
| 06:30 | 0.01 |
| 07:00 | 0.05 |
| 07:30 | 0.03 |
| 08:00 | 0.1 |
| 08:30 | 0.11 |
| 09:00 | 0.13 |
| 09:30 | 4.36 |
| 10:00 | 3.84 |
| 10:30 | 3.46 |
| 11:00 | 4.98 |
| 11:30 | 3.79 |
| 12:00 | 5.69 |
| 12:30 | 9.66 |
| 13:00 | 3.11 |
| 13:30 | 0.11 |
每個數據背後的精確 SQL 語法
WITH
(
SELECT max(d)
FROM
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960) AS rth_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 400
AND window_start < today() - 2
GROUP BY d
HAVING rth_bars >= 150 AND rth_bars <= 240
)
) AS half_day
SELECT
formatDateTime(toStartOfInterval(if(has(conditions, 8),
toTimeZone(sip_timestamp, 'America/New_York') - INTERVAL 10 MINUTE,
toTimeZone(sip_timestamp, 'America/New_York')),
INTERVAL 30 MINUTE), '%H:%i') AS et_half_hour,
round(sum(toFloat64(size)) / 1e6, 2) AS shares_m
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime(half_day, 'America/New_York')
AND sip_timestamp < toDateTime(half_day + 1, 'America/New_York')
AND NOT hasAny(conditions, [15, 16, 38])
GROUP BY et_half_hour
ORDER BY et_half_hour成交量分布在 26 個半小時區間內,熟悉的開盤繁忙、收盤較重形狀,被壓縮在三個半小時內。
一年有多少個交易日?
扣除週末與假日後,一個曆年約有250個交易時段。從交易紀錄逐一計算,才能確定確切數字:
| 交易日數 | 完整交易時段 | 縮短交易時段 | 不規則交易時段 | 週末交易時段 | 首個交易時段 | 最後交易時段 |
|---|---|---|---|---|---|---|
| 253 | 251 | 2 | 0 | 0 | 2025-10-13 | 2026-10-14 |
每個數據背後的精確 SQL 語法
SELECT
count() AS trading_days,
countIf(rth_bars >= 380) AS full_length_sessions,
countIf(rth_bars <= 240) AS shortened_sessions,
countIf(rth_bars > 240 AND rth_bars < 380) AS irregular_sessions,
countIf(is_weekend) AS weekend_sessions,
toString(min(d)) AS first_session,
toString(max(d)) AS last_session
FROM
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toDayOfWeek(toDate(toTimeZone(window_start, 'America/New_York'))) >= 6 AS is_weekend,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960) AS rth_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 370
AND window_start < today() - 2
GROUP BY d, is_weekend
HAVING rth_bars > 0
)在2025-10-13至2026-10-14期間,市場共有253個正常交易時段,其中251個為完整交易日、2個為縮短交易日,週末交易時段則恰為0個。這份交易紀錄本身證明,沒有任何週六或週日進行正常交易。
全球各地股市交易時段
美股交易時段只是全球近乎連續輪動的一部分。倫敦證券交易所當地時間上午8:00至下午4:30交易;其最後一段交易時段通常與美國常規交易時段的前兩個小時重疊,也就是美東時間上午9:30至11:30。歐洲股市收盤時,紐約通常已是上午。東京股市當地時間上午9:00至下午3:30交易,期間設有午休,整個交易時段都落在美國的隔夜時段內。幾乎每個平日,世界上總有某個主要交易所處於開市狀態;但在美國上市股票只有在本頁所採用的美國交易時段內才會出現成交紀錄。
股市交易時間常見問題
股市幾點開盤?
NYSE 和 Nasdaq 週一至週五在美東時間上午 9:30 開始正常交易。電子盤前交易更早於美東時間上午 4:00 開始,但各股票的正式開盤價,是在上午 9:30 的開盤集合競價中決定。
股市週末有開盤嗎?
沒有。美國股票交易所週六、週日均不開市;上方最近一年的逐筆交易資料顯示,週末交易時段為 0。週五美東時間下午 4:00 收市、晚盤交易於晚上 8:00 截止後,除假日外,交易會在週一美東時間上午 4:00 的盤前交易時段恢復。
什麼是盤前交易與盤後交易?
這是正常交易時段以外的電子交易。盤前交易時間為美東時間上午 4:00 至 9:30,盤後交易時間為下午 4:00 至晚上 8:00。兩者的參與者都少於正常交易時段,買賣價差也較大;多數券商在這些時段僅接受限價單。
股市何時會提早收市?
在預定的半日市,正常交易會於美東時間下午 1:00 結束,而非下午 4:00。這通常包括感恩節後的週五、聖誕節前夕(若適逢平日),以及部分年份的 7月3日。最近一年的逐筆交易資料顯示,共有 2 個縮短交易時段。
如果股票在收市時仍處於停牌狀態,會發生什麼事?
若股票在收市鐘響時仍處於停牌狀態,當天不會進行延後收市集合競價。根據交易所規則,若停牌持續至美東時間約下午 3:50 之後,便不得重新啟動開盤集合競價,因此停牌會持續至收市。由於沒有集合競價決定價格,交易所會以停牌前最後五分鐘內該股票自身成交的成交量加權平均價格,作為正式收盤價,而不是直接採用最後一筆成交價。停牌只適用於該股票,其餘市場仍會按原定時間於下午 4:00 收市。
股市是在下午 4:00 還是 4:30 收市?
美國股票交易所於美東時間下午 4:00 結束正常交易。下午 4:00 後仍在變動的報價,來自持續至晚上 8:00 的盤後交易;少數指數產品則交易至美東時間下午 4:15。
交易時間是時刻表;逐筆交易資料則是交易紀錄。上方每個面板都是儲存的查詢,可在 Strasmore terminal 開啟、編輯並重新執行,以白話查閱任何交易時段、任何 ticker,或下一個即將到來的休市日。