Indicators

Stochastic Oscillator (Overbought/Oversold)

%K measures where the close sits inside its recent high-low range, %D smooths it. The real signal is not the crossover itself, it's where the crossover happens.

Set your zones, watch which crossovers actually earn them

The panel below computes a genuine 14-period %K and its 3-period %D moving average from the closing prices as the tape plays. Every time %K crosses %D, the tool checks whether that crossover happened while the lines were still inside your overbought or oversold zone, or out in the middle of the range. Both kinds get tallied separately against what price actually did over the following bars, so you can see whether the zone genuinely adds anything.

Press play or step to build the stochastic live.

  • Crossovers will appear here as they happen.

In-zone crossovers

0 resolved / 0 pending

Mid-range crossovers

0 resolved / 0 pending

How it works

  1. %K reads where the close sits inside the recent range. %K = 100 × (close − lowest low over n) ÷ (highest high over n − lowest low over n). At 100, the close is at the top of the last n bars' range. At 0, it's at the bottom. Nothing else feeds into it.
  2. %D is just a 3-period simple moving average of %K. It lags %K by design, which is exactly what makes a %K/%D crossover a usable signal instead of a single noisy line whipping back and forth.
  3. Overbought and oversold are range labels, not automatic reversal calls. Above 80 (default) means the close has been trading near the top of its recent range, not that a top is in. A strong trend can pin the stochastic above 80 for many bars in a row.
  4. The zone is what separates the two crossover types here. A %K/%D cross that happens while the lines are still above your overbought line or below your oversold line gets logged as in-zone. A cross that happens between the two thresholds, with neither line ever reaching either zone first, gets logged as mid-range. Both get the same forward test, a real price-change check several bars later, so the win-rate split is measured, not assumed.

Where this breaks

A strong trend can keep the stochastic pinned in one zone for a long stretch

The formula only measures position inside a fixed lookback range, it has no idea whether that range itself is trending. In a strong uptrend, closes can sit near the top of their rolling 14-bar range for bar after bar, keeping %K and %D locked above 80 the entire time. Selling every overbought reading in that stretch means fading a trend that keeps extending, and by the time an actual in-zone crossover fires, the move may have already covered most of its distance. The oscillator itself never tells you which regime you're in, it just reports the close's position inside its own window. That's exactly why this tool tracks a live win rate instead of asserting one, some data runs will show the zone filter clearly adding value, others will show it barely mattering, because trend strength is the variable the stochastic can't see.

Risk & liability disclaimer: This page is an educational tool only, not financial, investment, or tax advice, and not a recommendation to take any specific trade. The candles and price data shown are randomly generated simulations for illustration, not real market data. Every strategy shown carries a real risk of loss, including loss of principal.