Strasmore Research
市场回顾 Matt Connor作者: Matt Connor · data as of July 22, 2026 · refreshed weekly

美股52周新高与新低名单(市场广度指标)

查看哪些美股收盘价创52周新高、哪些逼近52周新低,数据直接筛选自交易所成交记录,新高新低数量本身就是一项市场广度指标。

52周新高,是一只股票在过去一年里收盘价曾经达到的最高水平;52周新低则是最低水平。在最近一个已完成的交易日 Jul 20, 2026,本页筛选样本中有 19 只股票收盘价处于52周新高或其1%以内,另有 10 只处于52周新低或其1%以内。筛选样本覆盖流动性充足的美国大型运营公司,数据全部从交易所成交记录重新构建。

创52周新高的美股

下表列出新高榜单中年初至今涨幅最强的最多十二只股票,每一只当日收盘价都处于过去52周最高收盘价或其1%以内。

查询创52周新高的股票,按年初至今涨跌幅排序
每个数字背后的完整 SQL
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 20 DAY
      AND 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
      AND ticker IN (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt > (SELECT d FROM last_session) - 365
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT ticker,
       round(last_close, 2) AS close,
       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct
FROM ranged
WHERE last_close >= hi * 0.99
ORDER BY ytd_return_pct DESC, ticker ASC
LIMIT 12

榜首是 DINO,年初至今涨幅 96.3%,收盘价 90.42 美元。按这份榜单的构造方式,收盘价本身就处于52周新高的1%以内,因此价格这一列同时也是正在被测试的那个高点。紧随其后的是 MPC(涨幅 94%)和 VLO(涨幅 92.5%)。表格末尾的 MO 年初至今涨幅为 29.5%。

这种落差正是重点所在:52周新高只描述一个价格在自身一年区间内所处的位置,仅此而已。一只去年夏天大跌后又艰难爬回来的股票,和一只从未停止上涨的股票,会被贴上同一个标签。

创52周新低的美股

同一套筛选方法,方向相反:这些股票的收盘价处于过去52周最低收盘价或其1%以内,按年初至今表现从弱到更弱排列,最多列出十二只。

查询创52周新低的股票,按年初至今涨跌幅排序
每个数字背后的完整 SQL
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 20 DAY
      AND 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
      AND ticker IN (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt > (SELECT d FROM last_session) - 365
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT ticker,
       round(last_close, 2) AS close,
       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct
FROM ranged
WHERE last_close <= lo * 1.01
ORDER BY ytd_return_pct ASC, ticker ASC
LIMIT 12

榜单上年初至今表现最弱的是 PNR,涨跌幅 -40.3%,收盘价 62.14 美元,处于自身52周收盘新低的1%以内。其次是 ORCL,涨跌幅 -37.7%。

52周新低只是价格区间中的一个位置,不是对一家公司经营状况的判决。盈利良好的公司可能因为长时间的平淡走势滑到这份榜单上,真正陷入困境的公司也会出现在这里,单看收盘价无法区分两者。想了解同一个问题在整个市场层面的答案,请见市场如何从崩盘中恢复

新高新低数量对市场广度说明了什么

市场广度衡量的是有多少只股票参与了一次行情,而不是指数本身走了多远。新高数量与新低数量的对比,是历史最悠久的广度指标之一,也是本页最值得关注的数字。

查询每日新52周新高与新低数量对比,过去六周
每个数字背后的完整 SQL
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 20 DAY
      AND 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
      AND ticker IN (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 425 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt <= (SELECT d FROM last_session)
),
rolled AS (
    SELECT ticker, dt, c,
           max(c) OVER w AS hi,
           min(c) OVER w AS lo,
           count() OVER w AS n_sessions,
           min(dt) OVER (PARTITION BY ticker) AS first_dt
    FROM daily
    WINDOW w AS (PARTITION BY ticker ORDER BY dt RANGE BETWEEN 364 PRECEDING AND CURRENT ROW)
)
SELECT formatDateTime(dt, '%b %e, %Y') AS date,
       countIf(c >= hi * 0.99) AS at_52w_high,
       countIf(c <= lo * 1.01) AS at_52w_low,
       countIf(c >= hi * 0.99) - countIf(c <= lo * 1.01) AS net_highs
FROM rolled
WHERE n_sessions >= 200
  AND first_dt <= dt - 350
  AND dt > (SELECT d FROM last_session) - 43
GROUP BY dt
ORDER BY dt

Jul 20, 2026,筛选样本中有 19 只股票处于或接近52周新高,10 只处于或接近52周新低,净值为 9。六周前的 Jun 8, 2026,同一筛选样本的新高数量为 23,新低数量为 11

在图中呈现的 29 个交易日里,两个数字每天都在剧烈摆动,因此单一交易日的读数远不如数周内的趋势变化重要。如果指数保持平稳、但新高数量却在萎缩,说明市场的广度比指数本身显示的要窄。而当新低数量激增时,正是在别人恐惧时买入一文所讨论的情境——我们曾用新闻情绪数据对这一说法做过检验。

市场其余部分距离自身高点有多远

新高和新低是分布的两端,多数股票其实都活在中间地带。这个面板按每只股票距离自身52周高点的跌幅对整个筛选样本排序,并给出每个区间内年初至今涨跌幅的中位数。

查询整个筛选样本距离自身52周高点的分布
每个数字背后的完整 SQL
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 20 DAY
      AND 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
      AND ticker IN (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt > (SELECT d FROM last_session) - 365
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT multiIf(p < 1, 'At the high (under 1%)',
               p < 5, '1% to 5% below',
               p < 10, '5% to 10% below',
               p < 20, '10% to 20% below',
               p < 35, '20% to 35% below',
               'More than 35% below') AS bucket,
       count() AS stocks,
       round(100.0 * count() / sum(count()) OVER (), 1) AS share_pct,
       round(quantileExact(0.5)(ytd), 1) AS median_ytd_pct
FROM (
    SELECT (1 - last_close / hi) * 100 AS p,
           (last_close / base_close - 1) * 100 AS ytd,
           multiIf(p < 1, 0, p < 5, 1, p < 10, 2, p < 20, 3, p < 35, 4, 5) AS ord
    FROM ranged
)
GROUP BY bucket, ord
ORDER BY ord

筛选样本中有 3.9%(19 只股票)收盘价处于52周高点的1%以内。而在另一端,有 19.8% 的股票收盘价比自身高点低出35%以上。最高区间的年初至今涨跌幅中位数为 32%,最低区间为 -24.1%,图表描绘出了两者之间的完整形状。

这条递减的曲线更接近一道算术题,而不是什么新发现:一只接近52周高点的股票,按定义就是这一年里大部分时间都在上涨。这个面板真正的价值在于规模层面的信息——两端的极端情况有多罕见,以及市场里有多大比例的股票距离自身的最好价格已经很远。重仓持有其中一只股票所承担的风险,正是集中持股的真实风险一文所测量的内容。

大盘自身在52周区间内的位置

一只个股创下新高,如果发生在大盘自身也接近高点时,和发生在大盘远离高点时,含义并不相同。下面这五只宽基指数 ETF,采用与上面个股完全相同的测量方法。

查询五只宽基指数ETF在自身52周区间内的位置
每个数字背后的完整 SQL
WITH last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM', 'RSP')
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20
       AND dt > (SELECT d FROM last_session) - 365
       AND dt <= (SELECT d FROM last_session)
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT multiIf(ticker = 'SPY', 'S&P 500 (SPY)',
               ticker = 'QQQ', 'Nasdaq 100 (QQQ)',
               ticker = 'DIA', 'Dow 30 (DIA)',
               ticker = 'RSP', 'S&P 500 equal weight (RSP)',
               'Russell 2000 (IWM)') AS label,
       round((1 - last_close / hi) * 100, 2) AS pct_below_high,
       round((last_close / lo - 1) * 100, 1) AS pct_above_low,
       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct
FROM ranged
ORDER BY pct_below_high ASC

S&P 500 equal weight (RSP) 收盘价比自身52周高点低 1.24%,是五只中距离高点最近的一只,同时比自身52周低点高 17%。Nasdaq 100 (QQQ) 距离自身高点最远,低了 6.71%。年初至今,这两只的涨跌幅分别为 10.9% 和 13.3%。

同一个指数的等权重版本与市值加权版本之间的差距,本身就是一项广度指标。当等权重曲线离自身高点更近时,说明普通成分股的表现跑赢了少数超大市值成分股;当市值加权曲线离高点更近时,则说明指数是靠少数几家超大市值公司撑起来的。这两种情形都不预示任何未来走向,而在错误的时段离场所付出的代价,错过市场最好的几天一文有详细说明。

统计方法说明

本页所有数字都来自美国交易所成交记录的分钟K线,聚合为每日收盘价。完整规则如下:

  • 筛选样本。 仅限美国上市的运营公司,认定依据是该公司在过去 400 天内向 SEC 提交过覆盖某一期间的利润表,因此 ETF 和基金不会出现在任何一张榜单上。杠杆和反向 ETF 还会另外按名单逐一剔除,双重保险。
  • 流动性门槛。 股票在过去 20 个日历日内的成交金额必须至少达到 20 亿美元。刨去周末和假日,这个窗口大约对应十几个交易日,因此门槛折算下来大约是每个交易日 1.5 亿美元。这道门槛把榜单限制在读者真正能够交易的股票范围内,避免清淡的成交记录人为制造出极端读数。
  • 拆股剔除,而非复权处理。 任何在过去 460 天内执行过拆股的代码都会被从筛选样本中剔除。这个窗口刻意设定得比一整年还长,足以覆盖上方广度图表回溯到的最早价格。这是这类页面最容易发布虚假信息的地方:一次20合1的反向拆股会让报价瞬间放大二十倍,背后却没有任何真实成交,若不做处理,未调整的筛选器就会报出一个极其惊人的“新52周高点”;正向拆股则会反过来伪造出一个52周新低。
  • 以收盘价而非盘中极值为准。 新高和新低都按收盘价衡量。一只股票完全可能在盘中触及甚至穿越52周高点,最终却收在高点之下,那样它就不会出现在本页。以盘中成交价为基础构建的筛选器,报出的数量通常会更多。
  • 交易日必须已经完整。 当日收盘价取自纽约时间 15:30 至 16:00 之间的最后一根分钟K线。一个数据仍在加载中的交易日,在这半小时内没有K线,因此无法进入计算,进行中的交易日也永远不会被计入。提前收盘的假日交易日出于同样的原因被排除在外。上文标注的日期,就是通过这项测试的最后一个交易日,因此可能比日历上的今天晚一到两天。
  • 完整一年的历史数据。 股票在52周窗口内至少要有 200 个交易日的数据,且第一个交易日至少要在 350 天以前。一家三个月前才上市的公司,不可能在本页出现52周新高。
  • 1%的判定区间。 “处于52周新高”是指收盘价达到过去52周最高收盘价的1%以内,新低榜单的判定方式与此对称。年初至今涨跌幅,均以2025年最后一个交易日的收盘价为基准计算。

FAQ

在52周新高买入是明智的选择吗?

这个问题没有普遍适用的答案,本页也不提供任何投资建议。本页能展示的只是回顾性的数据:处于52周新高1%以内的股票,年初至今涨跌幅中位数为 32%,而收盘价比自身高点低35%以上的股票,这一数字为 -24.1%。这描述的是这些股票已经走过的这一年,而不是它们即将迎来的下一年。“52周新高”这个标签标记的是价格区间中的一个位置,而不是一种估值判断。

一只股票创52周新低意味着什么?

这意味着该股票的收盘价,低于此前52周内的任何一个收盘价。在 Jul 20, 2026,本页筛选样本中有 10 只股票符合这一情况。新低既可能伴随着经营状况的恶化,也可能只是一家盈利公司长期走势平淡的结果,仅凭价格本身无法区分是哪一种。

目前有多少只美股处于52周新高?

截至 Jul 20, 2026 收盘,本页筛选样本中有 19 只股票处于52周新高或其1%以内,另有 10 只处于52周新低或其1%以内。筛选样本仅包含过去 20 个日历日成交金额超过 20 亿美元的流动性充足的美国大型运营公司,因此这些数字会比覆盖全部上市股票的筛选结果更小。

52周新高是如何计算的?

取过去52周内的全部收盘价,找出其中的最大值。如果最新收盘价等于这个最大值,这只股票就创下了52周收盘新高。本页还会把处于这一水平1%以内的股票一并计入,并剔除过去460天内发生过拆股的代码,因为拆股只会改变报价,不会改变持仓本身的价值。


上面每个面板都存储着背后的 SQL。展开任意一张表格下方的查询即可核查筛选逻辑,也可以直接在 Strasmore 终端上运行它。如果想看的不是一年的极值,而是本周最大的涨跌幅,请见本周美股涨幅榜与跌幅榜

#52-week high#52-week low#market breadth#stock screener#market data