Strasmore Research
Học tập Matt ConnorBởi Matt Connor · Cập nhật 2026-10-18 · data as of October 18, 2026 · refreshed weekly

Giờ mở cửa và đóng cửa của thị trường chứng khoán Mỹ

NYSE và Nasdaq giao dịch chính từ 9:30 sáng đến 4:00 chiều ET, thứ Hai đến thứ Sáu. Premarket bắt đầu 4:00 sáng, after-hours đến 8:00 tối; đóng cửa cuối tuần.

Giờ giao dịch chứng khoán Mỹ kéo dài từ 9:30 sáng đến 4:00 chiều theo giờ miền Đông (ET), từ thứ Hai đến thứ Sáu. NYSE và Nasdaq đều mở cửa phiên giao dịch thông thường lúc 9:30 sáng ET và đóng cửa lúc 4:00 chiều ET. Bao quanh phiên chính là hai khung giờ mở rộng: giao dịch premarket từ 4:00 sáng ET và giao dịch after-hours đến 8:00 tối ET. Thị trường đóng cửa vào cuối tuần và khoảng mười ngày lễ mỗi năm. Mọi số liệu trên trang này đều được đo từ hồ sơ giao dịch thực tế. Truy vấn chính xác phía sau từng con số chỉ cách một lần nhấp. (Để xem phiên bản tổng quan, ngày đóng cửa kế tiếp và phiên gần nhất, hãy xem thị trường chứng khoán hôm nay có mở cửa không.)

Thị trường chứng khoán mở cửa và đóng cửa lúc mấy giờ?

Phiên giao dịch thông thường — khung giờ được dùng để mô tả giá niêm yết, các mức chỉ số và thông tin trên bản tin buổi tối — bắt đầu từ tiếng chuông mở cửa lúc 9:30 sáng ET và kết thúc khi tiếng chuông đóng cửa vang lên lúc 4:00 chiều ET. Phiên kéo dài sáu tiếng rưỡi, năm ngày mỗi tuần. Hai sở giao dịch niêm yết lớn của Mỹ sử dụng cùng một khung giờ. Lệnh giao dịch tiêu chuẩn tại công ty môi giới mặc định được thực hiện trong khung giờ này.

Toàn bộ ngày giao dịch điện tử kéo dài hơn khoảng thời gian giữa hai tiếng chuông:

  • Trước giờ mở cửa: 4:00 sáng đến 9:30 sáng ET, giao dịch điện tử trước tiếng chuông mở cửa.
  • Phiên thông thường: 9:30 sáng đến 4:00 chiều ET, thời điểm phần lớn hoạt động giao dịch trong ngày diễn ra.
  • Sau giờ giao dịch: 4:00 chiều đến 8:00 tối ET, giao dịch điện tử sau tiếng chuông đóng cửa.

Hai phiên đấu giá diễn ra ở hai đầu phiên giao dịch thông thường. Phiên đấu giá mở cửa xác lập giá mở cửa chính thức của từng cổ phiếu lúc 9:30 sáng. Phiên đấu giá đóng cửa là một giao dịch khớp lệnh lớn duy nhất diễn ra ngay sau 4:00 chiều, qua đó xác lập giá đóng cửa chính thức được các nguồn thông tin niêm yết trong buổi tối hôm đó. Tất cả thời gian trên trang này đều theo múi giờ miền Đông. Tại Bờ Tây nước Mỹ, phiên giao dịch thông thường diễn ra từ 6:30 sáng đến 1:00 chiều.

Giờ giao dịch chứng khoán thể hiện trên tape như thế nào?

Định nghĩa là một chuyện; tape mới là bằng chứng. Các biểu đồ dưới đây sử dụng một phiên giao dịch đầy đủ gần đây trên tape của SPY, 2026-10-14, một Wednesday, tức phiên gần nhất đã đủ cũ để dữ liệu được ghi nhận hoàn chỉnh (nguồn dữ liệu chậm hơn thực tế một hoặc hai ngày). Điều này được xác minh bằng cách đếm các nến một phút trong phiên chính: có 390 nến, tương ứng với từng phút giữa hai thời điểm mở cửa và đóng cửa. Nến đầu tiên của phiên xuất hiện lúc 04:00 ET và nến cuối cùng lúc 19:59 ET. Tape bao phủ toàn bộ ngày giao dịch mở rộng, từ 4:00 sáng đến 8:00 tối.

Truy vấnMột ngày giao dịch đầy đủ trên dữ liệu SPY, chia theo khung phiên (phiên đầy đủ gần nhất)
ngày phiênthứ trong tuầnsố bar phiên chínhphút bar đầu tiên trong ngàyphút bar cuối cùng trong ngàyET của bar đầu tiênET của bar cuối cùngtổng số cổ phiếu (triệu)% trước giờ mở cửa% phiên chính% 30 phút sau giờ đóng cửa% buổi tối% 30 phút đầu% 30 phút cuối% nửa giờ giữa phiên
2026-10-14Wednesday390240119904:0019:5955.72.686.292.18.125.13.5
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Tự chạy truy vấn này

Phân bổ khối lượng là điểm cần lưu ý. Khối lượng được đọc theo từng giao dịch từ consolidated tape, và giao dịch khớp trong phiên đấu giá đóng cửa được tính vào phiên chính mà nó kết thúc. Trong tổng số 55.7 triệu cổ phiếu SPY được giao dịch trong suốt khoảng thời gian mười sáu giờ đó, phiên chính chiếm 86.2%. Giai đoạn premarket kéo dài năm giờ rưỡi ghi nhận 2.6%. Nửa giờ ngay sau tiếng chuông đóng cửa ghi nhận 9%. Đây là khoảng thời gian thường xuất hiện các giao dịch lớn được thương lượng trước và báo cáo lên tape sau khi phiên kết thúc. Ba giờ rưỡi còn lại vào buổi tối ghi nhận tổng cộng 2.1%.

Các khoảng thời gian nửa giờ cho thấy hình dạng của cả ngày:

Truy vấnKhối lượng SPY theo mỗi nửa giờ, từ premarket đến after-hours (cùng phiên, theo giờ ET)
32 rows (showing 20)
nửa giờ ETcổ phiếu (triệu)
04:000.05
04:300.02
05:000.01
05:300
06:000.02
06:300.01
07:000.05
07:300.02
08:000.13
08:300.83
09:000.33
09:304.52
10:002.77
10:302.46
11:002.76
11:302.16
12:002.84
12:301.97
13:001.97
13:303.77
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Tự chạy truy vấn này

Trong phiên này, nửa giờ cuối, bao gồm cả giao dịch trong phiên đấu giá đóng cửa, chiếm 25.1% tổng khối lượng của cả ngày. Con số này so với 3.5% trong nửa giờ nghỉ trưa từ 12:30 đến 1:00; nửa giờ đầu phiên chiếm 8.1%. Khối lượng lớn vào cuối phiên có nguyên nhân mang tính cơ học: các quỹ chỉ số, mutual fund và tổ chức đầu tư theo benchmark giao dịch theo giá đóng cửa chính thức, khiến lệnh của họ tập trung vào phiên đấu giá đóng cửa. Tổng cộng, khối lượng được phân bổ vào 32 khoảng thời gian nửa giờ riêng biệt trong suốt ngày giao dịch mở rộng.

Giao dịch premarket và after-hours là gì?

Premarket (từ 4:00 sáng đến 9:30 sáng theo giờ ET) và after-hours (từ 4:00 chiều đến 8:00 tối theo giờ ET) là các khung giờ giao dịch chỉ thực hiện bằng phương thức điện tử, diễn ra trước và sau phiên giao dịch thông thường. Số người tham gia trong các khung giờ này ít hơn, bid-ask spread rộng hơn, và hầu hết các công ty môi giới chỉ chấp nhận lệnh giới hạn. Tin tức doanh nghiệp thường tập trung vào các khung giờ này. Báo cáo kết quả kinh doanh thường được công bố ngay sau khi thị trường đóng cửa lúc 4:00 chiều và trong những giờ trước khi mở cửa. Đây là những thời điểm giá cổ phiếu có thể mở cửa chênh lệch lớn so với giá đóng cửa trước đó. Giá được khớp lúc 7:00 tối không đảm bảo cổ phiếu sẽ mở cửa ở mức nào vào sáng hôm sau.

Tỷ trọng khối lượng theo từng phiên, chi phí bid-ask spread được đo lường và thời điểm trong ngày mà các tin tức thực sự xuất hiện đều được trình bày trong bài giao dịch after-hours và premarket, là bài viết liên quan của trang này. Tóm lại, như thể hiện trong các bảng phía trên, các phiên giao dịch mở rộng là những phiên giao dịch thực và có thể giao dịch, nhưng thanh khoản thấp hơn đáng kể so với phiên thông thường.

Giờ giao dịch của quyền chọn và hợp đồng tương lai là khi nào?

Quyền chọn trên cổ phiếu riêng lẻ giao dịch từ 9:30 sáng đến 4:00 chiều theo giờ ET, không có giao dịch trước giờ mở cửa và sau giờ đóng cửa. Một số ít ETF thị trường diện rộng và sản phẩm chỉ số, như SPY, QQQ, IWM, cùng các quyền chọn chỉ số như SPX và VIX, được giao dịch thêm 15 phút, đến 4:15 chiều theo giờ ET. Dữ liệu giao dịch cho thấy sự khác biệt này trên 2026-10-14, cùng phiên giao dịch đã được đo lường ở trên:

Truy vấnOptions cổ phiếu đơn lẻ và ETF lúc chuông 4:00 p.m.: giao dịch options AAPL và SPY quanh thời điểm đóng cửa (cùng phiên)
hợp đồngngày phiêngiao dịch từ 3:45 đến 4:00giao dịch từ 4:00 đến 4:15ET của giao dịch cuốiphút giao dịch cuối trong ngày
AAPL options (single name)2026-10-1411803316:00960
SPY options (ETF)2026-10-14644342969816:14974
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Tự chạy truy vấn này

15 phút cuối của phiên giao dịch thông thường sôi động trên cả hai dữ liệu giao dịch: 11803 giao dịch quyền chọn AAPL và 64434 giao dịch SPY. Trong 15 phút sau khi thị trường đóng cửa, hai mã này tách biệt rõ rệt: AAPL chỉ có 3 giao dịch lẻ, giao dịch cuối cùng lúc 16:00 theo giờ ET, trong khi SPY ghi nhận 29698 giao dịch, giao dịch cuối cùng lúc 16:14 theo giờ ET. Ngày đáo hạn có khung giờ riêng; quyền chọn 0DTE giao dịch khi nào giải thích lịch này.

Hợp đồng tương lai có khung giờ hoàn toàn khác: hợp đồng tương lai chỉ số cổ phiếu trên CME giao dịch gần như 24 giờ, từ 6:00 tối Chủ nhật đến 5:00 chiều thứ Sáu theo giờ ET, với một giờ tạm ngừng giao dịch mỗi ngày từ 5:00 chiều. Đây là dữ liệu giao dịch qua đêm đứng sau mọi tiêu đề kiểu “futures tăng sáng nay”. Thị trường trái phiếu giao dịch OTC theo khung giờ khuyến nghị của SIFMA, khoảng từ 8:00 sáng đến 5:00 chiều theo giờ ET, và có lịch nghỉ lễ riêng: trái phiếu đóng cửa vào Columbus Day và Veterans Day, trong khi cổ phiếu vẫn giao dịch.

Khi nào thị trường chứng khoán đóng cửa?

Thị trường chứng khoán Mỹ đóng cửa vào cuối tuần, trong khoảng mười ngày lễ trọn ngày mỗi năm và đóng cửa sớm vào một số ngày giao dịch rút ngắn theo lịch, lúc 1:00 chiều ET. Lịch bên dưới lấy trực tiếp từ lịch của sở giao dịch và tự cập nhật: mỗi ngày lễ sẽ được loại bỏ sau khi đi qua, còn ngày tiếp theo sẽ được đưa lên.

Truy vấnCác ngày nghỉ và phiên đóng cửa sớm sắp tới của thị trường cổ phiếu Mỹ, theo lịch sở giao dịch
ngày nghỉ lễthứ trong tuầnngày nghỉ lễtrạng thái ngàyET đóng cửa sớmsố ngày cách biệt
2026-11-26ThuThanksgivingclosed40
2026-11-27FriThanksgivingearly-close01:00 PM41
2026-12-24ThuChristmasearly-close01:00 PM68
2026-12-25FriChristmasclosed69
2027-01-01FriNew Years Dayclosed76
2027-01-18MonMartin Luther King, Jr. Dayclosed93
2027-02-15MonWashington's Birthdayclosed121
2027-03-26FriGood Fridayclosed160
2027-05-31MonMemorial Dayclosed226
2027-06-18FriJuneteenthclosed244
2027-07-05MonIndependence Dayclosed261
2027-09-06MonLabor Dayclosed324
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Tự chạy truy vấn này

Lần đóng cửa theo lịch tiếp theo là Thanksgiving vào 2026-11-26, còn 40 ngày nữa. Lịch đã tải hiển thị 12 ngày đóng cửa sắp tới, mỗi ngày được đánh dấu là đóng cửa cả ngày hoặc đóng cửa sớm. Vào ngày đóng cửa sớm, phiên giao dịch thông thường kết thúc lúc 1:00 chiều ET thay vì 4:00 chiều. Thời gian giao dịch là ba tiếng rưỡi thay vì sáu tiếng rưỡi, và phiên đấu giá đóng cửa ghi nhận giao dịch lúc 1:00 chiều. Các ngày giao dịch rút ngắn này thường tập trung quanh Lễ Tạ ơn và Giáng sinh. Quy tắc bù ngày cuối tuần — ngày lễ rơi vào thứ Bảy khiến thị trường đóng cửa vào thứ Sáu trước đó, còn ngày lễ rơi vào Chủ nhật khiến thị trường đóng cửa vào thứ Hai sau đó — lịch đầy đủ và cách kiểm tra một ngày đóng cửa trong quá khứ từ dữ liệu giao dịch được trình bày tại các ngày nghỉ và ngày đóng cửa sớm của thị trường chứng khoán.

Một nửa ngày giao dịch thể hiện như thế nào trên tape?

Lịch giao dịch cho biết các phiên đóng cửa sớm; tape cho thấy một phiên như vậy diễn ra ra sao. Phiên nửa ngày gần nhất trên tape của SPY là 2025-12-24, với Wednesday: 210 bar theo phút trong phiên chính, từ 9:30 sáng đến phiên đấu giá đóng cửa lúc 1:00 chiều.

Truy vấnPhiên đóng cửa sớm gần nhất trên dữ liệu SPY, chia theo khung phiên
ngày phiênthứ trong tuầnsố bar phiên sángET của bar cuối cùngphút bar cuối cùng trong ngàytổng số cổ phiếu (triệu)% trước giờ mở cửa% phiên chính% 30 phút sau giờ đóng cửa% buổi tối% 30 phút đầu% 30 phút cuối% đóng cửa trừ mở cửa
2025-12-24Wednesday21016:59101939.91.289.67.81.410.924.213.3
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Tự chạy truy vấn này

Cấu trúc của một ngày giao dịch đầy đủ vẫn thể hiện dù thời gian bị rút ngắn. Trong tổng số 39.9 triệu cổ phiếu SPY được khớp, phiên chính rút ngắn chiếm 89.6%. Riêng nửa giờ cuối trước khi đóng cửa lúc 1:00 chiều, bao gồm cả giao dịch trong phiên đấu giá đóng cửa, chiếm 24.2%, cao hơn nhiều so với 10.9% của nửa giờ đầu. Lực giao dịch tập trung ở phiên đấu giá đóng cửa vẫn giống một ngày bình thường, nhưng được đẩy lên sớm hơn ba giờ. Nửa giờ sau khi đóng cửa ghi nhận 7.8% (một lần nữa là khung thời gian báo cáo block trade), còn phần thời gian còn lại của buổi chiều chỉ ghi nhận 1.4%. Giao dịch ngoài giờ cũng kết thúc sớm: bar cuối ngày được ghi nhận lúc 16:59 ET. Trong các ngày giao dịch nửa ngày, phiên sau giờ giao dịch kết thúc khoảng 5:00 chiều, sớm hơn ba giờ so với mốc 8:00 tối thông thường. Thị trường quyền chọn cũng đóng cửa sớm: 1:00 chiều đối với cổ phiếu đơn lẻ và 1:15 chiều đối với các hợp đồng ETF và chỉ số có thời gian giao dịch mở rộng.

Truy vấnKhối lượng SPY theo mỗi nửa giờ trong phiên đóng cửa sớm, từ premarket đến after-hours rút ngắn (theo giờ ET)
26 rows (showing 20)
nửa giờ ETcổ phiếu (triệu)
04:000.03
04:300
05:000.01
05:300.01
06:000.01
06:300.01
07:000.05
07:300.03
08:000.1
08:300.11
09:000.13
09:304.36
10:003.84
10:303.46
11:004.98
11:303.79
12:005.69
12:309.66
13:003.11
13:300.11
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Tự chạy truy vấn này

Khối lượng được phân bổ vào 26 bucket nửa giờ. Mô hình quen thuộc với thanh khoản cao lúc mở cửa và tăng mạnh hơn khi đóng cửa bị nén vào ba tiếng rưỡi.

Có bao nhiêu ngày giao dịch trong một năm?

Loại trừ các ngày cuối tuần và ngày nghỉ lễ, một năm dương lịch còn khoảng 250 phiên giao dịch. Đếm trực tiếp từ dữ liệu giao dịch sẽ cho con số chính xác:

Truy vấnCác phiên giao dịch trong một năm qua, tính từ dữ liệu SPY
ngày giao dịchphiên đầy đủphiên rút ngắnphiên bất thườngphiên cuối tuầnphiên đầu tiênphiên cuối cùng
2532512002025-10-132026-10-14
Câu lệnh SQL chính xác đằng sau mỗi con số
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
)
Tự chạy truy vấn này

Trong khoảng thời gian từ 2025-10-13 đến 2026-10-14, thị trường có 253 phiên giao dịch thông thường, gồm 251 phiên đủ thời lượng và 2 phiên rút ngắn, cùng chính xác 0 phiên cuối tuần. Đây là bằng chứng từ dữ liệu giao dịch rằng không có phiên thông thường nào diễn ra vào thứ Bảy hoặc Chủ nhật.

Giờ giao dịch chứng khoán trên toàn cầu

Giờ giao dịch tại Mỹ chỉ là một phần trong chu kỳ luân phiên gần như liên tục của các thị trường toàn cầu. Sở Giao dịch Chứng khoán London giao dịch từ 8:00 sáng đến 4:30 chiều theo giờ địa phương. Giai đoạn cuối phiên tại London thường chồng lấn với hai giờ đầu của phiên giao dịch chính tại Mỹ, từ 9:30 đến 11:30 sáng theo giờ ET. Vì vậy, thời điểm các thị trường châu Âu đóng cửa rơi vào giữa buổi sáng tại New York. Thị trường Tokyo giao dịch từ 9:00 sáng đến 3:30 chiều theo giờ địa phương, có nghỉ trưa, và toàn bộ phiên nằm trong thời gian giao dịch qua đêm của Mỹ. Gần như vào bất kỳ ngày làm việc nào, cũng có một sở giao dịch lớn đang mở cửa ở đâu đó trên thế giới. Tuy nhiên, cổ phiếu niêm yết tại Mỹ chỉ có các giao dịch được khớp trong khung giờ Mỹ được đo trên trang này.

Câu hỏi thường gặp về giờ giao dịch chứng khoán

Thị trường chứng khoán mở cửa lúc mấy giờ?

NYSE và Nasdaq mở cửa giao dịch thông thường lúc 9:30 sáng theo giờ miền Đông Mỹ (ET), từ thứ Hai đến thứ Sáu. Giao dịch điện tử trước giờ mở cửa bắt đầu sớm hơn nhiều, từ 4:00 sáng ET. Tuy nhiên, giá mở cửa chính thức của từng cổ phiếu được xác lập tại phiên đấu giá mở cửa lúc 9:30 sáng.

Thị trường chứng khoán có giao dịch vào cuối tuần không?

Không. Các sở giao dịch chứng khoán Mỹ không tổ chức phiên giao dịch vào thứ Bảy hoặc Chủ nhật. Dữ liệu tape của một năm gần nhất ở trên cho thấy 0 phiên cuối tuần. Sau khi thị trường đóng cửa lúc 4:00 chiều thứ Sáu và phiên after-hours kết thúc lúc 8:00 tối, giao dịch tiếp tục vào lúc 4:00 sáng thứ Hai trong phiên premarket, ngoại trừ các ngày nghỉ lễ.

Giao dịch premarket và after-hours là gì?

Đây là giao dịch điện tử diễn ra ngoài giờ giao dịch thông thường. Premarket kéo dài từ 4:00 sáng đến 9:30 sáng ET. After-hours kéo dài từ 4:00 chiều đến 8:00 tối ET. Cả hai phiên đều có ít người tham gia hơn và bid-ask spread rộng hơn phiên thông thường. Phần lớn công ty môi giới chỉ chấp nhận lệnh giới hạn trong các phiên này.

Khi nào thị trường đóng cửa sớm?

Vào các ngày giao dịch rút ngắn theo lịch, phiên giao dịch thông thường kết thúc lúc 1:00 chiều ET thay vì 4:00 chiều. Các ngày này thường gồm thứ Sáu sau Lễ Tạ ơn, đêm Giáng sinh nếu rơi vào ngày làm việc và ngày 3 tháng 7 trong một số năm. Dữ liệu tape của một năm gần nhất cho thấy 2 phiên giao dịch rút ngắn.

Điều gì xảy ra nếu một cổ phiếu bị tạm ngừng giao dịch vào thời điểm đóng cửa?

Nếu vẫn bị tạm ngừng giao dịch khi có tiếng chuông đóng cửa, cổ phiếu đó sẽ không có phiên đấu giá đóng cửa được tổ chức muộn trong ngày. Quy định của sở giao dịch không cho phép tổ chức đấu giá mở cửa trở lại khi lệnh tạm ngừng kéo dài quá khoảng 3:50 chiều ET. Vì vậy, lệnh tạm ngừng đơn giản tiếp tục có hiệu lực cho đến khi thị trường đóng cửa. Khi không có đấu giá để xác lập giá, sở giao dịch sử dụng giá bình quân gia quyền theo khối lượng của các giao dịch chính cổ phiếu đó trong năm phút cuối trước khi bị tạm ngừng làm giá đóng cửa chính thức. Giá này không nhất thiết là giá của giao dịch cuối cùng. Lệnh tạm ngừng áp dụng riêng cho từng cổ phiếu; phần còn lại của thị trường vẫn đóng cửa đúng lịch lúc 4:00 chiều.

Thị trường chứng khoán đóng cửa lúc 4:00 hay 4:30?

Các sở giao dịch chứng khoán Mỹ kết thúc giao dịch thông thường lúc 4:00 chiều ET. Những báo giá tiếp tục biến động sau thời điểm này thuộc phiên after-hours, kéo dài đến 8:00 tối ET. Một số sản phẩm chỉ số được giao dịch đến 4:15 chiều ET.


Giờ giao dịch là lịch trình; tape là bằng chứng ghi nhận. Mỗi bảng ở trên là một stored query mà bạn có thể mở, chỉnh sửa và chạy lại trên terminal Strasmore để kiểm tra bất kỳ phiên giao dịch, ticker hoặc lần đóng cửa tiếp theo nào bằng ngôn ngữ thông thường.

#market hours#sessions#trading calendar