All scan recipes
    SEBI Registered Research Analyst · INH000015297

    Consolidating near a 52-week high

    Stocks pausing in a tight range within 5% of their 52-week high — and deliberately NOT breaking out today.

    By Rohit Singh (Mr. Chartist) · Updated 2026-08-25

    Most 52-week-high scans return stocks that have already broken out, which is the moment the risk is widest. This one returns the list before that: names sitting quietly just under the ceiling, with the range contracting and volume drying up.

    The exclusion is the design decision. Any stock trading through its 52-week high today is removed. This is the watchlist, not the entry list — the trigger has not happened yet, which is the entire reason it is useful.

    Scan clause · last run 2026-08-25
    ( {cash} ( latest close > 50 and latest sma( latest volume , 20 ) > 200000 and latest close >= 1 day ago max( 252 , latest high ) * 0.95 and latest high <= 1 day ago max( 252 , latest high ) and 1 day ago max( 10 , latest high ) <= 1 day ago min( 10 , latest low ) * 1.06 and 1 day ago max( 20 , latest high ) <= 1 day ago min( 20 , latest low ) * 1.12 and latest close <= 1 day ago max( 10 , latest high ) and latest close >= 1 day ago min( 10 , latest low ) and latest sma( latest volume , 5 ) < latest sma( latest volume , 20 ) ) )

    Chartink can fail silently. Tested on 2026-08-25: a clause containing a nonsense token returned the same number of rows as the correct one, with no error, and a clause with no comparison in it returned every stock in the segment. A scan that returns results has not necessarily parsed as you intended — so sanity-check a few of the names it gives you against the conditions above before trusting the list.

    Chartink's own documentation notes that scans cannot always be copy-pasted directly, and its in-app copy function moves condition groups rather than raw text. Treat this clause as the specification to reproduce in the condition builder; if pasting works in your account, so much the better.

    What this scan actually tests

    • Liquidity floors first: close above ₹50 and 20-session average volume above 2,00,000 shares.
    • Proximity: the last close is at or above 95% of the highest high of the 252 candles ending yesterday.
    • No breakout yet: today's high is at or below that same 252-candle high.
    • Range contraction: the 10-candle span is about 6% or less and the 20-candle span about 12% or less, with the 5-session average volume below the 20-session average.

    What it cannot see

    A scan is bar arithmetic. It cannot read a chart, and every recipe here is honest about where the machine stops and your eyes start.

    • Base shape or quality. A clean flag, a rectangle and a choppy overlapping mess all satisfy the same range arithmetic.
    • How long price has genuinely held near the high — only fixed 10 and 20-candle windows are checked, so a three-month base and a two-week pause score identically.
    • When the 52-week high was set. One made eleven months ago (stale) looks identical to one made three candles ago (live, defended supply).
    • The breakout itself. By design there is no entry trigger here.

    Why this setup is worth scanning for

    A stock near its highs has no trapped supply overhead — everyone holding it is in profit. When the range then contracts on falling volume, the sellers have stopped arriving. That is the setup; the breakout is the trigger.

    A genuinely short list, and the most useful of the six as a standing watchlist rather than a daily action list. Expect names to persist across several days — that is the pattern working, not the scan repeating.

    Educational content. A scan is a filter, not a recommendation — the names it returns are candidates for your own analysis, not a buy list, and nothing here is investment advice. Chartink is a third-party service with no affiliation to this site. Registration granted by SEBI, membership of BASL and certification from NISM in no way guarantee performance or assure returns. Markets carry risk.