# Reversal stock scanners for NSE

> Oversold and overbought screeners for NSE stocks. RSI, stochastic, CCI, MACD crosses and the golden cross, each paired with the trend filter that makes it usable.

Canonical: https://dev.patternsradar.com/scans/reversals

A reversal scan hunts the turn: the oversold stock finding its footing, the overbought one running out of buyers, the moving-average cross that marks a trend changing hands. The oscillators underneath all of them measure one thing, which is how one-sided the recent sessions have been, and one-sidedness resolves. The catch every reversal trader pays to learn is that oversold is no floor. A stock in real decline can sit under RSI 30 for months. So almost every buy-side scan here pairs its oscillator with a long-term trend condition. Oversold above the 200-day average is a pullback with an owner base defending it; oversold below the 200-day is a falling knife with a number attached. The sell-side mirrors are on this page too. An overbought reading in something you already own is how an exit announces itself early.

## The scans (32)

### RSI oversold turning up

https://dev.patternsradar.com/screener/rsi-oversold-turn.md

```sift
where rsi(14) crossed above 30 within 3 bars
  and close > sma(200)
```

RSI back above 30 within the last three sessions, in a stock still holding its 200-day average. RSI can sit under 30 for weeks in a genuine downtrend, so buying the reading on its own is how you catch a falling knife. Waiting for the cross back up at least asks for evidence that the selling stopped. The 200-day filter restricts the list to stocks pulling back inside an uptrend. A stock unwinding below its 200-day never appears.

Top 500 by turnover.

### RSI overbought

https://dev.patternsradar.com/screener/rsi-overbought.md

```sift
where rsi(14) > 70 and close > sma(50)
```

RSI over 70 in a stock still above its 50-day average. Stretched, and worth knowing either way. Read this two ways depending on what you are doing with it. If you hold the name, an overbought reading is a warning that the move is extended and a pause is likely. If you trade momentum it is a feature, because strong stocks spend a lot of time overbought and selling every 70 print is how you exit the best trends early.

Top 500 by turnover.

### Golden cross

https://dev.patternsradar.com/screener/golden-cross.md

```sift
where sma(50) crosses above sma(200)
```

The 50-day average crossing up through the 200-day. The most widely watched trend signal there is, and a slow one. By the time the 50-day clears the 200-day, price has usually moved a long way already. I read it as a regime marker. It tells you which side of the trend a name is on and very little about when to buy it.

Top 500 by turnover.

### Death cross

https://dev.patternsradar.com/screener/death-cross.md

```sift
where sma(50) crosses below sma(200)
```

The 50-day average crossing down through the 200-day. The golden cross in reverse, and just as lagging. I use it as a filter over everything else I am doing. A name that has just printed one is a poor candidate for a long setup, whatever the rest of the chart looks like.

Top 500 by turnover.

### MACD bullish crossover

https://dev.patternsradar.com/screener/macd-bullish-cross.md

```sift
where macd().line crosses above macd().signal
  and macd().line < 0
```

MACD crossing above its signal line from below zero. MACD crossing its signal line is the standard momentum turn. Insisting that the cross happen below zero is what makes this a reversal scan. The stock has been in a downswing and is turning, instead of already trending and pausing.

Top 500 by turnover.

### MACD bearish crossover

https://dev.patternsradar.com/screener/macd-bearish-cross.md

```sift
where macd().line crosses below macd().signal
  and macd().line > 0
```

MACD crossing below its signal line from above zero. Momentum rolling over. The mirror of the bullish cross, and the more useful of the two if you already own stock. Requiring the cross to happen above zero catches names losing momentum while they are still in an uptrend. That is where the signal has something to say. Below zero it is confirming a decline that is already well underway.

Top 500 by turnover.

### Bounce off the 200-day

https://dev.patternsradar.com/screener/bounce-off-200.md

```sift
where close crosses above sma(200)
```

Yesterday closed below the 200-day average, today closed back above it. Plenty of institutional mandates treat the 200-day average as the boundary between a holding and a problem, and that alone makes reclaiming it meaningful, whether or not the average predicts anything. This is the single-bar version. Closed below, closed back above.

Top 500 by turnover.

### Supertrend flips bullish

https://dev.patternsradar.com/screener/supertrend-flip.md

```sift
where supertrend_dir == 1 and supertrend_dir[-1] == -1 and adx > 20
```

The Supertrend flipping from down to up, with ADX over 20 behind it. Supertrend is an ATR-based trailing stop that flips side when price closes through it, so a flip is a stop-and-reverse event and not an oscillator reading. The ADX filter matters more here than usual. In a rangebound stock Supertrend flips constantly and every one of those flips is noise.

Top 500 by turnover.

### Parabolic SAR flips bullish

https://dev.patternsradar.com/screener/psar-flip.md

```sift
where close crosses above psar() and adx > 20
```

Price crossing above the parabolic SAR with ADX over 20. SAR accelerates toward price the longer a move runs, so it tightens on its own as a trend matures and flips the moment the trend breaks. Like Supertrend, it is a trend-following tool wearing a reversal signal's clothes. The ADX filter is not optional.

Top 500 by turnover.

### Williams %R oversold

https://dev.patternsradar.com/screener/williams-oversold.md

```sift
where williams_r < -80 and close > sma(200)
```

Williams %R below -80 while the 200-day average still holds. A staple of oversold screening. Williams %R measures where today's close sits inside the recent high-low range, so a reading under -80 means the stock is closing near the bottom of it. It reacts faster than RSI. That makes it better at spotting a turn and worse at confirming one.

Top 500 by turnover.

### Stochastic oversold crossover

https://dev.patternsradar.com/screener/stoch-oversold-cross.md

```sift
where stoch().k crosses above stoch().d and stoch().k < 25
```

%K crossing up through %D with %K still under 25. The stochastic beats a bare threshold because it has two lines. The fast %K crossing its own average is the event, and requiring that to happen under 25 is what keeps this a reversal scan. Above 25 the same cross fires constantly and means very little.

Top 500 by turnover.

### Money flow oversold

https://dev.patternsradar.com/screener/mfi-oversold.md

```sift
where mfi < 20 and close > sma(200)
```

Money Flow Index under 20 in a stock above its 200-day average. It is RSI with volume in it. MFI is RSI with each period weighted by the money that traded in it, so quiet drifts get discounted and the sessions where size actually changed hands carry more. A reading under 20 in a stock that is still above its 200-day average is selling that has run out of participants.

Top 500 by turnover.

### Heikin-Ashi turns green

https://dev.patternsradar.com/screener/heikin-ashi-turn.md

```sift
where ha_close > ha_open
  and ha_close[-1] < ha_open[-1]
  and close > sma(50)
  and rel_volume > 1.3
```

The first green Heikin-Ashi candle after a red one, above the 50-day average and on heavier volume. Heikin-Ashi averages each candle with the one before it. Most single-session noise disappears and a run of one colour becomes easy to see. The first colour change after a red run is the earliest signal the smoothing will give you, and the volume filter is there to stop it firing on a drift.

Top 500 by turnover.

### RSI reclaiming 50

https://dev.patternsradar.com/screener/rsi-50-reclaim.md

```sift
where rsi(14) crosses above 50 and close > sma(200)
```

RSI crossing back above its midline in a stock that never lost its long-term trend. The 30 and 70 extremes get all the attention, but in a trending stock RSI rarely reaches 30 at all. It bottoms near 40 and reclaims 50 as the pullback ends. So the midline cross is the earlier and far more common buy signal in an uptrend, and the 200-day filter confines the list to stocks where "the pullback ending" is the right way to read it.

Top 500 by turnover.

### RSI bullish divergence

https://dev.patternsradar.com/screener/rsi-bullish-divergence.md

```sift
where low within 3% of min(low, 8w)
  and rsi(14) > rsi(14)[-20] + 3
  and rsi(14) < 45
```

Price near a two-month low while RSI sits at least three points above where it was a month ago. The selling is running out of momentum before it runs out of price. A regular bullish divergence is price making a lower low while RSI makes a higher low. The second leg down covered as much ground as the first with less force behind it. The textbook version needs two swing lows identified and compared, which a single-bar scan cannot do, so this approximates it with offsets: today's low within 3% of the two-month low, and RSI at least three points above where it stood twenty sessions ago, when the earlier low was most likely forming. The cap at 45 keeps the list to stocks whose momentum is still depressed. A divergence that has already resolved into RSI 60 is a past event. Treat what comes back as a candidate list. Divergences can persist through several more lows before a turn, and the honest next step is the hit-rate replay.

Top 500 by turnover.

### RSI bearish divergence

https://dev.patternsradar.com/screener/rsi-bearish-divergence.md

```sift
where high within 3% of max(high, 8w)
  and rsi(14) < rsi(14)[-20] - 3
  and rsi(14) > 55
```

Price near a two-month high while RSI reads three points below its level of a month ago. The mirror. Price presses a two-month high while RSI runs at least three points below its reading from twenty sessions ago, which is the fingerprint of an advance that keeps making highs on less participation each push. The floor at 55 keeps RSI in the territory where a divergence means something; a stock that has already rolled over to RSI 40 is not diverging, it is falling. The caveat applies harder in this direction. Strong trends can print bearish divergences for weeks while the price keeps climbing, so what you get here is a list of names where the pace has changed. It is not a list of tops.

Top 500 by turnover.

### CCI oversold turn

https://dev.patternsradar.com/screener/cci-oversold-turn.md

```sift
where cci crossed above -100 within 2 bars and close > sma(200)
```

CCI back above −100 within the last two sessions, in a stock still above its 200-day. CCI measures how far price has stretched from its own recent average, in units of its own typical deviation. Below −100 is the oversold zone. Being there is not the signal; leaving it is. The cross back above −100 is the first measurable evidence that the selling has stopped, and it is caught within two bars so the list still contains fresh turns.

Top 500 by turnover.

### CCI overbought

https://dev.patternsradar.com/screener/cci-overbought.md

```sift
where cci > 100 and rsi(14) > 65
```

CCI above +100 with RSI over 65. Two oscillators saying the same thing at once. Two overbought readings computed different ways are harder to argue with than one. CCI above +100 says price is well beyond its normal deviation from trend, and RSI above 65 says the recent sessions have been one-sided. Stocks here are candidates for a pause or a fade. In a strong bull phase they can also stay stretched far longer than a short position can stay solvent.

Top 500 by turnover.

### Stochastic RSI oversold

https://dev.patternsradar.com/screener/stoch-rsi-oversold.md

```sift
where stoch_rsi < 20 and close > sma(200)
```

Stochastic RSI under 20 in a stock above its 200-day average. The twitchiest oversold reading available. Stochastic RSI runs the stochastic formula on RSI itself, which makes it the most sensitive of the standard oscillators. It hits its extremes on dips that ordinary RSI barely registers. I treat it as a shortlist builder and nothing more, because it fires often. The 200-day filter keeps it pointed at healthy stocks having a bad week, which is the only context where buying an oversold reading has an edge.

Top 500 by turnover.

### DI bullish cross

https://dev.patternsradar.com/screener/di-bull-cross.md

```sift
where di_plus crosses above di_minus and adx > 20
```

+DI overtaking −DI while ADX confirms there is a trend worth joining. The two DI lines split price movement into its upward and downward components, and whichever is on top says who has control. The cross on its own fires in every sideways chop. That is what the ADX condition is for: above 20 the market is actually going somewhere, so a change of control means a change of direction.

Top 500 by turnover.

### DI bearish cross

https://dev.patternsradar.com/screener/di-bear-cross.md

```sift
where di_minus crosses above di_plus and adx > 15
```

−DI overtaking +DI with ADX above 15. The mirror of the bullish cross, and mostly a defensive tool. A stock you hold turning up on this list is the trend-following system telling you the up-leg is over. In a rising market it fires rarely, and that is exactly when the few names that do fire it deserve the attention.

Top 500 by turnover.

### Force index turning positive

https://dev.patternsradar.com/screener/force-index-turn.md

```sift
where force_index crosses above 0 and close > sma(50)
```

Elder's force index crossing above zero in a stock above its 50-day average. Force index is the day's price change multiplied by its volume, then smoothed. It stays negative while sellers have both direction and size behind them, and it crosses zero when that stops being true. Alexander Elder designed the zero cross as a pullback entry inside an uptrend, and the 50-day condition is what puts this scan back in that context.

Top 500 by turnover.

### Bollinger lower band bounce

https://dev.patternsradar.com/screener/bb-lower-bounce.md

```sift
where close crosses above bb().lower
```

Price closing back inside the bands after a two-standard-deviation flush. A close below the lower band is a statistically unusual amount of selling. Closing back above it is the band trader's classic entry, on the argument that the unusual condition resolved upward. The thing to respect is that in a genuine downtrend price can ride the lower band for weeks. This scan finds the re-entry. When the re-entry fails, that is information too.

Top 500 by turnover.

### Williams %R overbought

https://dev.patternsradar.com/screener/williams-overbought.md

```sift
where williams_r > -20 and rsi(14) > 70
```

Closing in the top fifth of its two-week range with RSI above 70. Williams %R reads where today's close sits inside the recent high-low range. Above −20 means the stock is closing at the very top of everything it has traded in two weeks. Pair that with an RSI over 70 and you have names priced for perfection in the short term. Traders fade them. Holders are better off moving a stop up than selling.

Top 500 by turnover.

### Stochastic overbought cross

https://dev.patternsradar.com/screener/stoch-overbought-cross.md

```sift
where stoch().k crosses below stoch().d and stoch().k > 75
```

%K crossing down through %D above 75. The stochastic sell signal has three parts and all of them are here: the oscillator is in its upper zone, the fast line has turned, and it has crossed the slow line. It marks short-term exhaustion rather than a change of trend. In strong stocks it usually precedes a pause and not a collapse, so use it to time an exit before you use it to start a short.

Top 500 by turnover.

### 9/21 EMA crossover

https://dev.patternsradar.com/screener/ema-9-21-cross.md

```sift
where ema(9) crossed above ema(21) within 2 bars
  and close > sma(200)
```

The 9-day EMA crossing above the 21 within the last two sessions, in a stock still above its 200-day. A golden cross on a swing trader's clock. The 50/200 golden cross confirms a trend months after it started. This is the same event on a swing trader's clock. Nine days overtaking twenty-one marks the short-term tide turning, and it turns often, so the 200-day filter is not optional. Above the long-term average the cross is a pullback ending. Below it, the cross is usually noise inside a decline.

Top 500 by turnover.

### Broke below the 200-day average

https://dev.patternsradar.com/screener/broke-below-200-dma.md

```sift
where close crossed below sma(200) within 3 bars
```

Crossed under the 200-day moving average within the last three sessions. Everybody watches that line. The mirror of the bounce-off-200 scan, and the harder one to look at if you own the stock. The 200-day is the most-quoted line in the business precisely because so many holders use it as their last exit, and that is what gives the break its meaning. The sellers it creates are not day traders. Plenty of breaks reclaim the line within a week, and the hit-rate panel will tell you how often, which beats folklore.

Top 500 by turnover.

### Near a five-year low

https://dev.patternsradar.com/screener/near-5-year-low.md

```sift
where close within 5% of lowest_low(5y) and rsi(14) < 35
```

Within 5% of the lowest low in five years with RSI under 35. The most abandoned names on the exchange, for a reversal hunt. The mirror of the five-year high. A very different list. These are stocks the market has given up on for half a decade, with momentum still exhausted, and most of them deserve it, which is why the scan runs on the wider universe and pairs the level with RSI instead of trusting proximity alone. It is a place to start a reversal search: check the dividend record, the promoter change, whether the sector is turning. I keep it on a shortlist and ignore it most weeks.

Top 1000 by turnover.

### Recovering from a three-year low

https://dev.patternsradar.com/screener/off-3-year-low.md

```sift
where pct_from_low(3y) > 50
    and close > sma(200)
    and return(3mo) > 10
```

Up more than 50% off the three-year low, back above the 200-day average, with a three-month return over 10%. Bottom-fishing is expensive because the bottom is only visible afterwards. This scan waits for the recovery to be undeniable. Fifty percent above the three-year low means the low has held for a while, the 200-day filter means the trend has actually turned, and a positive quarter means it is still going. The `pct_from_low(3y)` form is the 52-week distance field stretched to a longer window, which is what a cycle-length recovery needs.

Top 500 by turnover.

### First up day after a selloff

https://dev.patternsradar.com/screener/first-up-day-after-selloff.md

```sift
where count(close < open, 10) >= 7
  and close > open
  and close > high[-1]
```

Seven or more down days in the last ten, then a close above the previous day's high. The first session the sellers lost. Seven or more down sessions in ten is a selloff with some persistence to it. A close above the previous day's high is the smallest unit of the sellers losing control. The two conditions want to be counted separately: the run is described with `count` so that one green bar inside the decline does not disqualify it, and the turn is the current bar, checked exactly. It fires rarely, and that is the point. What comes back is the day's earliest reversal candidates. Plenty of oversold stocks are absent from it.

Top 500 by turnover.

### Candle between the 20 and 50

https://dev.patternsradar.com/screener/pullback-between-averages.md

```sift
where greatest(open, close) < sma(20)
  and least(open, close) > sma(50)
  and sma(50) > sma(200)
```

The whole candle body sits under the 20-day average and above the 50-day, with the 50 above the 200. A pullback that has broken nothing. Most pullback scans compare the close to an average, which lets a candle that pierced the 50-day intraday and recovered sneak through. Using `greatest(open, close)` and `least(open, close)` asks about the whole body. It opened and closed under the 20-day, and opened and closed above the 50-day. With the 50 above the 200 as the trend filter, what comes back is a stock that has pulled back into the band between its two averages without any part of the session breaking the lower one.

Top 500 by turnover.

### Fifteen sessions under the 20-day

https://dev.patternsradar.com/screener/long-slump-oversold.md

```sift
where countstreak(close < sma(20), 60) >= 15
  and rsi(14) < 35
```

Fifteen or more unbroken closes below the 20-day average, RSI under 35. A slump old enough to be exhausted. A stock that has closed under its 20-day average for fifteen sessions running, with RSI under 35, has been sold steadily rather than dumped in a day. Steady selling exhausts itself in a way a single crash does not. `countstreak` is what keeps the run unbroken: one close above the average resets it to zero, so a name that has been bouncing around the line never qualifies. The list is short and skewed towards stocks with genuine problems. The value is in the ones that are simply out of favour.

Top 500 by turnover.

## Common questions

### What is the best RSI level to buy at?

There isn't one. In trending stocks RSI rarely reaches the textbook 30; pullbacks bottom near 40 and turn there. The 30 threshold suits deeper corrections. Context does more work than the level anyway. RSI 35 above a rising 200-day average and RSI 35 in a downtrend are different situations.

### Why do oversold scans include a 200-day moving average filter?

Oversold is a timing signal and says nothing about value. The 200-day filter confines the scan to stocks whose long-term trend is up, where a washed-out oscillator marks a pullback ending. Without it the scan returns stocks that are cheap because the business is dying.

### What is the difference between a golden cross and a death cross?

The golden cross is the 50-day average crossing above the 200-day. The death cross is the same pair crossing the other way. Both fire well after the turn they describe, and their value is confirmation.

## More scan categories

- [Breakout stock scanners for NSE](https://dev.patternsradar.com/scans/breakouts.md)
- [Momentum stock scanners for NSE](https://dev.patternsradar.com/scans/momentum.md)
- [Delivery percentage scanners for NSE](https://dev.patternsradar.com/scans/delivery.md)
- [Volatility stock scanners for NSE](https://dev.patternsradar.com/scans/volatility.md)
- [Candlestick pattern scanners for NSE](https://dev.patternsradar.com/scans/candlestick-patterns.md)
- [F&O derivatives scanners for NSE](https://dev.patternsradar.com/scans/derivatives.md)
- [Fundamental stock scanners for NSE](https://dev.patternsradar.com/scans/fundamentals.md)

The whole library: https://dev.patternsradar.com/scans.md.

---

Price and delivery data from the [eod2](https://github.com/BennyThadikaran/eod2) dataset: National Stock Exchange of India end-of-day files, split- and bonus-adjusted, updated after each close. Not affiliated with or endorsed by NSE. PatternsRadar is a research tool. Nothing here is investment advice or a recommendation to buy or sell anything.
