Strasmore Research
Học tập Matt ConnorBởi Matt Connor

High-Low Index là gì? Độ rộng thị trường

High-Low Index là trung bình 10 ngày của Record High Percent. Xem công thức với số tròn và hạn chế cỡ mẫu khi thị trường giao dịch trầm lắng.

High-Low Index là một thước đo độ rộng thị trường được xây dựng từ hai số liệu: đây là đường trung bình động đơn giản 10 ngày của Record High Percent, trong đó Record High Percent bằng số cổ phiếu lập đỉnh mới trong 52 tuần chia cho tổng số cổ phiếu lập đỉnh mới trong 52 tuần và cổ phiếu lập đáy mới trong 52 tuần, rồi nhân với 100. Mức trên 50 cho thấy số cổ phiếu lập đỉnh mới nhiều hơn số cổ phiếu lập đáy mới, còn mức dưới 50 cho thấy điều ngược lại. Công thức chỉ đơn giản như vậy. Phần dưới trình bày phép tính bằng các số tròn và chỉ ra hạn chế về cỡ mẫu, khiến một mức đọc có vẻ dứt khoát thực chất chỉ dựa trên một nhóm nhỏ cổ phiếu.

Tính High-Low Index như thế nào?

Hai bước, mỗi bước đều có thể viết trên một dòng.

  1. Record High Percent trong một phiên: đếm số cổ phiếu trong phạm vi theo dõi đóng cửa ở mức đỉnh mới trong 52 tuần, đếm số cổ phiếu đóng cửa ở mức đáy mới trong 52 tuần, lấy số đỉnh chia cho tổng của hai số này, rồi nhân với 100.
  2. High-Low Index: tính trung bình của 10 mức Record High Percent hằng ngày gần nhất.

Các số tròn giúp phép tính dễ hình dung hơn. Một phiên ghi nhận 90 đỉnh mới và 30 đáy mới. Tổng số đỉnh và đáy là 120, còn 90 chia cho 120 bằng 0,75, nên Record High Percent của phiên đó là 75. Tiếp theo, lấy 10 phiên có các mức lần lượt là 75, 70, 65, 60, 55, 50, 45, 40, 35 và 30. Tổng là 525, chia cho 10 bằng 52,5. High-Low Index ở mức 52,5 trong một ngày mà Record High Percent riêng của ngày đó là 75.

Khoảng cách này chính là cái giá của đường trung bình động. Việc ghi nhớ dữ liệu trong 10 ngày giúp làm mượt một chuỗi có thể chuyển từ 100 xuống 0 chỉ sau một đêm, nhưng đổi lại chỉ báo phản ứng chậm. Chỉ số cho biết độ rộng thị trường đã diễn biến ra sao trong khoảng hai tuần. Nó không cho biết điều gì xảy ra trong buổi chiều hôm đó.

Thế nào được tính là đỉnh mới trong 52 tuần?

Một cổ phiếu lập đỉnh mới trong 52 tuần khi giá của nó vượt mọi mức giá được ghi nhận trong 52 tuần trước đó. Các nhà cung cấp dữ liệu khác nhau về cơ sở tính toán: một số so sánh các mức cao và thấp trong phiên, trong khi số khác chỉ so sánh giá đóng cửa. Hai cách này cho ra số liệu khác nhau trong cùng một phiên. Tất cả số liệu trên trang này đều dựa trên giá đóng cửa. Đỉnh và đáy mới trong 52 tuần trình bày chi tiết danh sách này.

Bảng dưới đây đếm cả hai loại cực trị trong từng phiên đối với một rổ cố định gồm 40 cổ phiếu vốn hóa lớn của Mỹ, từ ngày 1 tháng 4 đến ngày 31 tháng 7 năm 2026. Quy mô rổ đủ nhỏ để có thể kiểm tra các số liệu bằng tay. Đây cũng là lý do hạn chế trong công thức sẽ trở nên rõ ràng ở phần sau.

Truy vấnMức cao và thấp mới trong 52 tuần mỗi phiên: 40 mã vốn hóa lớn của Mỹ, tháng 4–7/2026
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH daily_close AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
      AND window_start >= toDateTime('2025-03-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 05:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
extremes AS (
    SELECT cur.ticker AS ticker,
           cur.session_date AS session_date,
           cur.close_px AS close_px,
           max(hist.close_px) AS high_52w,
           min(hist.close_px) AS low_52w
    FROM daily_close AS cur
    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
    WHERE cur.session_date >= toDate('2026-04-01')
      AND hist.session_date <= cur.session_date
      AND hist.session_date > cur.session_date - 364
    GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
    SELECT session_date,
           countIf(close_px >= high_52w) AS new_highs,
           countIf(close_px <= low_52w) AS new_lows,
           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
    FROM extremes
    GROUP BY session_date
    HAVING names_at_extreme > 0
)
SELECT session_date AS date,
       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
       new_highs,
       new_lows
FROM daily
ORDER BY session_date
Run this yourself

Trong 77 phiên, hai số liệu này hiếm khi cùng tăng. Vào Jul 29, phiên cuối cùng trong khoảng thời gian, có 3 trong số 40 cổ phiếu đóng cửa ở đỉnh mới trong 52 tuần và 0 cổ phiếu đóng cửa ở đáy mới trong 52 tuần. Vào Apr 1, phiên đầu tiên, tỷ lệ là 1 cổ phiếu lập đỉnh so với 1 cổ phiếu lập đáy. Mọi cổ phiếu khác trong rổ đều nằm đâu đó trong biên độ riêng của chúng và không được đưa vào phép tính.

Mức High-Low Index nào được xem là tốt?

Mốc 50 là điểm cân bằng, khi số đỉnh và số đáy tương đương. Mốc mạnh theo thông lệ là 70. Ở mức này, số đỉnh mới vượt số đáy mới với tỷ lệ cao hơn two-to-one trong toàn bộ mức trung bình 10 ngày. Mốc yếu theo thông lệ là 30, đối xứng với mốc 70. Trong khoảng từ 30 đến 70, chỉ số cho thấy các cực trị của thị trường đang đan xen. Đây là vùng chỉ số xuất hiện trong phần lớn thời gian.

Bảng dưới đây biểu diễn Record High Percent hằng ngày và đường trung bình 10 ngày của chính chỉ số này đối với cùng một rổ cổ phiếu. Độ trễ được thể hiện trực tiếp trên biểu đồ.

Truy vấnTỷ lệ mức cao kỷ lục và trung bình 10 ngày (High-Low Index), rổ 40 mã
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH daily_close AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
      AND window_start >= toDateTime('2025-03-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 05:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
extremes AS (
    SELECT cur.ticker AS ticker,
           cur.session_date AS session_date,
           cur.close_px AS close_px,
           max(hist.close_px) AS high_52w,
           min(hist.close_px) AS low_52w
    FROM daily_close AS cur
    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
    WHERE cur.session_date >= toDate('2026-04-01')
      AND hist.session_date <= cur.session_date
      AND hist.session_date > cur.session_date - 364
    GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
    SELECT session_date,
           countIf(close_px >= high_52w) AS new_highs,
           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
    FROM extremes
    GROUP BY session_date
    HAVING names_at_extreme > 0
),
rhp AS (
    SELECT session_date,
           round(100 * new_highs / names_at_extreme, 1) AS record_high_pct
    FROM daily
),
smoothed AS (
    SELECT session_date,
           record_high_pct,
           round(avg(record_high_pct) OVER (ORDER BY session_date
                                            ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS high_low_index_pct,
           count() OVER (ORDER BY session_date
                         ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS sessions_in_window
    FROM rhp
)
SELECT session_date AS date,
       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
       record_high_pct,
       high_low_index_pct
FROM smoothed
WHERE sessions_in_window = 10
ORDER BY session_date
Run this yourself

Khoảng dữ liệu trên biểu đồ bắt đầu với Record High Percent ở mức 100 vào Apr 15, trong khi chỉ số ở mức 52.5. Khoảng này kết thúc ở 100 vào Jul 29, còn chỉ số ở mức 64. Hãy đối chiếu từng mức với các mốc 70 và 30. Khoảng cách giữa hai đường chính là cái giá của việc làm mượt: vào bất kỳ ngày nào, đường trung bình vẫn mang theo dữ liệu của chín phiên cũ hơn. Chín phiên đầu tiên trong khoảng thời gian không được đưa lên bảng, vì đường trung bình 10 ngày cần đủ 10 phiên dữ liệu.

Mẫu số bỏ qua phần lớn thị trường

Đây là hạn chế cần ghi nhớ. Mẫu số của Record High Percent là số đỉnh mới cộng số đáy mới, không bao gồm thành phần nào khác. Một cổ phiếu nằm giữa biên độ 52 tuần không xuất hiện trong tử số cũng như mẫu số. Chỉ số không thể phân biệt một phiên trong đó 900 trên 3.000 cổ phiếu chạm một cực trị với một phiên chỉ có 9 cổ phiếu chạm cực trị. Cả hai trường hợp đều tạo ra cùng một con số có hai chữ số, trông rất dứt khoát.

Hãy hình dung một sàn giao dịch có 6.000 cổ phiếu trong một phiên tháng 8 trầm lắng: 40 cổ phiếu lập đỉnh mới và 20 cổ phiếu lập đáy mới. Record High Percent bằng 40 chia cho 60, tương đương 66,7, tạo cảm giác như thị trường tăng trên diện rộng. Nhưng phép tính chỉ dựa trên 1% số cổ phiếu niêm yết. 5.940 cổ phiếu còn lại không có tiếng nói trong chỉ báo.

Rổ 40 cổ phiếu cho thấy vấn đề này bằng một cách có thể đếm được. Mỗi phiên trong khoảng thời gian được xếp vào một nhóm dựa trên số cổ phiếu ghi nhận bất kỳ cực trị nào.

Truy vấnMẫu số thu hẹp đến mức nào: các phiên được phân nhóm theo số mã ở mức cực trị 52 tuần
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH daily_close AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
      AND window_start >= toDateTime('2025-03-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 05:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
extremes AS (
    SELECT cur.ticker AS ticker,
           cur.session_date AS session_date,
           cur.close_px AS close_px,
           max(hist.close_px) AS high_52w,
           min(hist.close_px) AS low_52w
    FROM daily_close AS cur
    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
    WHERE cur.session_date >= toDate('2026-04-01')
      AND hist.session_date <= cur.session_date
      AND hist.session_date > cur.session_date - 364
    GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
    SELECT session_date,
           countIf(close_px >= high_52w) AS new_highs,
           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
    FROM extremes
    GROUP BY session_date
    HAVING names_at_extreme > 0
)
SELECT multiIf(names_at_extreme <= 3, '1 to 3 names',
               names_at_extreme <= 9, '4 to 9 names',
               '10 or more names') AS sample_size_bucket,
       count() AS readings,
       round(avg(names_at_extreme), 1) AS avg_names_in_denominator,
       round(quantileDeterministic(0.5)(100 * new_highs / names_at_extreme,
                                        cityHash64(session_date)), 1) AS median_record_high_pct,
       round(quantileDeterministic(0.5)(abs(100 * new_highs / names_at_extreme - 50),
                                        cityHash64(session_date)), 1) AS median_distance_from_50
FROM daily
GROUP BY sample_size_bucket
ORDER BY avg_names_in_denominator
Run this yourself

Trong 39 phiên thuộc nhóm 1 to 3 names, toàn bộ mức đọc dựa trên trung bình 2 cổ phiếu trong tổng số 40 cổ phiếu. Các phiên này có Record High Percent trung vị là 100 và cách mốc 50 một khoảng trung vị 50 điểm. Nhóm gồm 10 or more names phiên, trong đó 1 phiên có trung bình 10 cổ phiếu, có mức trung vị 70 và cách mức giữa 20 điểm.

Phép tính cũng giới hạn những mức mà một phiên có thanh khoản mỏng có thể tạo ra. Khi có ba cổ phiếu chạm cực trị, các mức khả dĩ duy nhất là 0, 33,3, 66,7 và 100. Khi có hai cổ phiếu, chỉ có thể là 0, 50 hoặc 100. Mức 66,7 được tạo ra từ hai đỉnh và một đáy có thêm một chữ số thập phân mà cỡ mẫu không đủ để hỗ trợ. Cách xử lý rất rõ ràng: luôn đọc số lượng đỉnh và đáy thực tế bên cạnh chỉ số, không bao giờ xem chỉ số một cách độc lập.

Độ rộng thị trường: High-Low Index và advance/decline

Cả hai chỉ báo đều đo lường số cổ phiếu tham gia vào diễn biến thị trường. Tuy nhiên, chúng đo trong các khoảng thời gian khác nhau. Độ rộng advance/decline đếm mọi cổ phiếu đóng cửa tăng hoặc giảm so với ngày hôm trước. Mẫu số là toàn bộ phạm vi theo dõi, và chỉ báo mô tả một ngày. High-Low Index chỉ đếm các cổ phiếu đang ở cực trị trong 52 tuần. Mẫu số nhỏ hơn, còn chỉ báo mô tả vị trí của giá so với lịch sử cả năm. Thị trường có thể tăng trên diện rộng trong ngày trong khi chỉ có rất ít cổ phiếu ở gần đỉnh 52 tuần.

Bảng dưới đây làm mượt cả hai chỉ báo trong cùng 10 phiên và trên cùng một rổ cổ phiếu, đưa chúng về cùng một thang đo.

Truy vấnHai thước đo độ rộng, cùng một rổ: High-Low Index 10 ngày so với tỷ lệ mã tăng 10 ngày
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH daily_close AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
      AND window_start >= toDateTime('2025-03-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 05:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
extremes AS (
    SELECT cur.ticker AS ticker,
           cur.session_date AS session_date,
           cur.close_px AS close_px,
           max(hist.close_px) AS high_52w,
           min(hist.close_px) AS low_52w
    FROM daily_close AS cur
    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
    WHERE cur.session_date >= toDate('2026-04-01')
      AND hist.session_date <= cur.session_date
      AND hist.session_date > cur.session_date - 364
    GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
    SELECT session_date,
           countIf(close_px >= high_52w) AS new_highs,
           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
    FROM extremes
    GROUP BY session_date
    HAVING names_at_extreme > 0
),
prior AS (
    SELECT ticker,
           session_date,
           close_px,
           lagInFrame(close_px, 1) OVER (PARTITION BY ticker ORDER BY session_date
                                         ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily_close
),
breadth AS (
    SELECT session_date,
           round(100 * countIf(close_px > prev_close) / count(), 1) AS advancing_pct
    FROM prior
    WHERE session_date >= toDate('2026-04-01')
      AND prev_close > 0
    GROUP BY session_date
    HAVING count() >= 20
),
combined AS (
    SELECT d.session_date AS session_date,
           round(100 * d.new_highs / d.names_at_extreme, 1) AS record_high_pct,
           b.advancing_pct AS advancing_pct
    FROM daily AS d
    INNER JOIN breadth AS b ON d.session_date = b.session_date
),
smoothed AS (
    SELECT session_date,
           round(avg(record_high_pct) OVER (ORDER BY session_date
                                            ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS high_low_index_pct,
           round(avg(advancing_pct) OVER (ORDER BY session_date
                                          ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS advancing_pct_10d,
           count() OVER (ORDER BY session_date
                         ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS sessions_in_window
    FROM combined
)
SELECT session_date AS date,
       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
       high_low_index_pct,
       advancing_pct_10d
FROM smoothed
WHERE sessions_in_window = 10
ORDER BY session_date
Run this yourself

Hai chỉ báo bắt đầu khoảng dữ liệu trên biểu đồ lần lượt ở 52.5 đối với High-Low Index và 52.8 đối với tỷ lệ cổ phiếu tăng trong 10 ngày vào Apr 15. Chúng kết thúc lần lượt ở 6452.5 vào Jul 29, trên tổng cộng 68 phiên được biểu diễn. Tỷ lệ cổ phiếu tăng nằm trong một biên độ hẹp. Trong một phiên thông thường, khoảng một nửa số cổ phiếu trong rổ đóng cửa tăng. Khi lấy trung bình 10 phiên, đường chỉ báo vẫn nằm gần giữa thang đo. High-Low Index không có điểm neo như vậy. Nếu không có cổ phiếu nào trong rổ lập đáy mới trong 10 phiên liên tiếp, mọi mức đọc hằng ngày đều là 100 và mức trung bình cũng là 100.

Độ rộng thị trường sẽ dễ phân tích hơn khi đặt cạnh các thước đo mức độ tham gia. Relative volume cho biết một cổ phiếu có đang giao dịch với khối lượng bất thường so với mức thông thường của chính nó trong ngày hay không. Các cổ phiếu biến động mạnh nhất trong tuần cho thấy cổ phiếu nào thực sự dịch chuyển, còn các cổ phiếu có khối lượng bất thường trong tuần này cho biết dòng giao dịch tập trung ở đâu.

Câu hỏi thường gặp về High-Low Index

Mức High-Low Index trên 70 có ý nghĩa gì?

Điều đó có nghĩa số đỉnh mới trong 52 tuần vượt số đáy mới trong 52 tuần với tỷ lệ cao hơn two-to-one trong mức trung bình của 10 phiên gần nhất. Đây là mốc cho thấy thị trường mạnh theo thông lệ. Tuy nhiên, mức này không cho biết có bao nhiêu cổ phiếu thực sự chạm cực trị. Đó là số liệu cần kiểm tra cùng với chỉ số.

Record High Percent khác High-Low Index như thế nào?

Record High Percent là số liệu của một phiên: số đỉnh mới chia cho tổng số đỉnh mới và đáy mới, rồi nhân với 100. High-Low Index là đường trung bình động đơn giản 10 ngày của số liệu đó. Một chỉ báo mô tả hôm nay. Chỉ báo còn lại mô tả hai tuần gần nhất.

High-Low Index có thể bằng 0 hoặc 100 không?

Có. Nếu không có cổ phiếu nào trong phạm vi theo dõi lập đáy mới trong 10 phiên liên tiếp, mọi mức đọc hằng ngày đều là 100 và mức trung bình cũng là 100. Nếu không có cổ phiếu nào lập đỉnh mới hoặc đáy mới, phân số có mẫu số bằng 0 và phiên đó không có mức đọc xác định.

High-Low Index có giống độ rộng advance/decline không?

Không. Độ rộng advance/decline chia cho toàn bộ phạm vi theo dõi và mô tả hướng đi trong một ngày. High-Low Index chia cho nhóm nhỏ các cổ phiếu đang ở cực trị 52 tuần và mô tả vị trí của chúng so với lịch sử giá một năm.

Mẫu số của High-Low Index thường gồm bao nhiêu cổ phiếu?

Trong rổ 40 cổ phiếu được đo lường từ tháng 4 đến tháng 7 năm 2026, các phiên thuộc nhóm 1 to 3 names có trung bình 2 cổ phiếu trong mẫu số. Số liệu trên toàn sàn có thể lớn hơn về mặt tuyệt đối nhưng vẫn chỉ chiếm một phần nhỏ tổng số cổ phiếu niêm yết. Vì vậy, cần hiển thị số lượng thực tế bên cạnh chỉ số.


Mọi số liệu trên trang này đều là kết quả từ một truy vấn được lưu trữ và phiên bản hóa, dựa trên giá đóng cửa. Hãy mở bất kỳ bảng nào để xem SQL phía sau, hoặc xây dựng lại cùng chuỗi độ rộng thị trường trên một rổ cổ phiếu do bạn lựa chọn trong terminal Strasmore.

#market breadth#52-week highs#indicators#record high percent