TradingView market breadth workflows

New High-New Low Index: measure breadth within one universe

The New High-New Low Index is a market breadth measure: count the securities reaching new 52-week highs, then subtract those reaching new 52-week lows in the same universe and session. A positive result means highs outnumber lows. Divide the difference by the matching eligible issue count to compare participation across differently sized universes. The result describes a group of securities, not where one stock sits within its annual price range.

See the decision guide

Calculate three measures from the same counts

Let H count new highs, L count new lows and N count all eligible issues with valid classifications for the observation. Every security gets one vote in each applicable count, regardless of market capitalization. StockCharts calls H - L Net New Highs and the universe-normalized version High-Low Percent. Keep H and L visible because subtraction can hide substantial activity on both sides.

  • These are different scales. StockCharts defines its High-Low Index as a 10-day simple moving average of Record High Percent. A label containing high-low does not identify the formula by itself.
  • For N greater than zero and H and L each between zero and N, normalized net breadth lies between -100% and +100%. A reading outside this range indicates invalid counts, mismatched units or an incorrect denominator.
  • If H = L = 0 and N is valid, net breadth is zero and normalized breadth is 0%. Record High Percent is undefined because its denominator is zero; do not replace it with 50%.
  • If N is zero or a required count is missing, report unavailable. Missing is not a genuine count of zero.
MeasureFormulaWhat the denominator means
Net new highsH - LNo denominator; the result is a number of issues.
Normalized net breadth100 × (H - L) / NAll eligible, valid issues in the same universe.
Record High Percent100 × H / (H + L)Only high/low counts; this excludes issues at neither extreme.

Work through a universe of 1,000 eligible issues

These invented observations assume complete coverage, a fixed eligible universe and one completed daily session. They are arithmetic examples, not market data. The two 1,000-issue rows show why a positive net value cannot reveal the activity at both extremes by itself.

  • A: 80 - 20 = 60; 100 × 60 / 1,000 = 6%; 100 × 80 / 100 = 80%. Only 8% of the universe made a new high. The 80% reading refers to high/low counts, not all stocks.
  • B: 300 - 240 remains 60, but 100 × 300 / 540 = 55.56%. The net reading masks far more issues reaching both extremes.
  • C: the same 60-issue imbalance represents 15% of 400 issues. Normalization addresses population size; it does not make different sectors, security types or price-adjustment policies interchangeable.
ObservationHLNH - LNormalized netRecord High Percent
A: more highs80201,000+60+6.00%80.00%
B: both sides active3002401,000+60+6.00%55.56%
C: a smaller universe8020400+60+15.00%80.00%
D: no new extremes001,00000.00%Unavailable

Define what counts as a 52-week extreme

A trailing calendar window and a fixed number of daily bars are different definitions. A 252-session window is a common research approximation for a trading year, but it is not exactly 52 calendar weeks in every market or date range. Write down the window actually used by your provider. A 52-bar calculation on a daily chart describes 52 sessions, not 52 weeks.

  • Specify whether the daily high/low or the closing price must reach the extreme. TradingView documents its New high/New low screener filters as comparing the latest session with the selected historical range. Its worked filter example includes equality, so a tied high can qualify.
  • For a custom full-history series, state an explicit policy such as: compare the completed session high and low with the extrema over the trailing 52 calendar weeks including that session; allow ties; require coverage back to the window start. This is a research definition to verify against the chosen feed, not a claim about every vendor.
  • A stock listed eight weeks ago has an eight-week history. Under the full-history policy it is ineligible until the required window exists. A provider may instead use available history; do not silently mix those conventions.
  • An old extreme can leave the rolling window. If an old 100 high expires and the remaining maximum is 90, a session that again reaches 90 can qualify under a tie-inclusive rule without a fresh price increase.
  • Keep adjustments consistent. StockCharts documents differences from other providers arising from dividend adjustments and whether ETFs are included. Splits, dividends and changed security identifiers also need a documented treatment.

Separate eligibility, missing observations and survivors

Suppose the intended membership contains 1,100 securities. Your full-history rule excludes 100 recent listings, leaving 1,000 eligible issues. If 40 eligible issues then lack valid observations, coverage is 960 / 1,000 = 96%. With H = 80 and L = 20 among those 960, observed normalized breadth is 100 × 60 / 960 = 6.25%. Label it as observed-sample breadth; it is not a complete-universe value.

  • Each of the 40 unknown issues could contribute between -1 and +1 to net breadth. The full eligible universe therefore has a net count between 20 and 100, or normalized breadth between 2% and 10%. A rule requiring more than 5% cannot be resolved from these inputs.
  • Retain the membership applicable on each historical date, including securities that later delisted or left an index. Applying today's surviving members to earlier dates conditions the sample on later outcomes.
  • For example, assume a historical 100-member universe had H = 10 and L = 20. Net breadth was -10%. If ten of those low-making stocks later disappeared and you remove them from that historical sample, the remaining 90 show H = 10 and L = 10, falsely changing that day to 0%. This illustrates selection bias, not an estimate of its usual magnitude.
  • New listings becoming eligible, delistings, index additions and identifier changes can move N over time. Save dated membership and coverage alongside the line. A changing universe is valid when disclosed; an undocumented reconstruction cannot establish historical market breadth.

Verify a TradingView observation before using it

TradingView offers market breadth views for markets and indices. Start by identifying whether the selected view covers an exchange, a country or an index membership. For a chart series or community indicator, inspect its description, inputs and formula. A single-stock 52-week screener identifies qualifying names; it does not by itself supply a historical market-wide breadth series.

  • Record the full data symbols or the dated constituent list, included security types, H and L definitions, denominator, adjustment settings and session timezone. Never subtract one exchange's highs from another exchange's lows.
  • When counting screener matches, use the same saved base filters for the high list, low list and eligible population. Additional liquidity, country or security-type filters change the universe and denominator.
  • Check several securities at the qualification boundary, including a tied high, a new listing and a missing quote. Check counts against the same observation time; a live screener and a completed daily aggregate need not agree.
  • Confirm that the required input series are available to Pine before requesting automation. A breadth number on a website does not establish that a chart symbol exists for it. Do not infer the counts from the index price.
  • For historical decisions, use the information available at the decision time. A final daily count published after the close cannot be used earlier that day. Record subsequent data corrections separately.

Turn a verified breadth condition into a reviewable workflow

An example research condition is: flag a move from normalized breadth at or below zero to above zero after the daily observation is complete, only when the defined universe has full valid coverage. Require both the previous and current observations to pass that coverage rule. This specifies an observable event; it is not an entry recommendation.

  • A prior value of -2% followed by observation A at +6% qualifies. A missing current count produces unavailable, not an alert. A live +6% reading before the selected completion time remains provisional.
  • Supply the Pine Script AI Coding Agent with the verified input symbols, formula, completion timing and coverage policy to draft a chart aid or alert. Inspect the generated source, request a syntax check and compare output with the worked examples before relying on notifications.
  • Use Trading Journal session notes to preserve the original condition, dated universe, raw counts, coverage, timestamp and screenshot link. Add the later outcome and review date without rewriting the original hypothesis.
  • A chart aid cannot reconstruct missing historical membership or turn a later classification into a live signal. Breadth can remain positive while prices fall, and a reversal rule requires separate testing, execution assumptions and risk limits.
Where Pineify fits

Pine Script AI Coding Agent

Draft an editable breadth monitor from verified data inputs, an explicit formula and a missing-data policy. Review the output against the source counts.

Also useful: Trading Journal. Save the hypothesis, universe version, counts and screenshot links in session notes, then add a dated review.

Draft a breadth monitor

Frequently asked questions

Educational information, not investment advice. Numerical examples are hypothetical. Market breadth does not guarantee future price direction or returns. Verify the universe, input history and publication timing before testing a rule.

Sources and verification

Published by Pineify. Pineify is an independent product and is not affiliated with TradingView. Sources support the technical explanations; examples do not establish trading performance.