The stochastic oscillator tells you where a close sits inside a chosen recent high-low range. It does not tell you that price has to reverse just because the line reaches 80 or 20.
That distinction is most of the lesson. The oscillator can turn a chart observation into a precise condition; it cannot turn that condition into an edge by itself.
What the stochastic oscillator measures
The basic %K calculation expresses the current close relative to the highest high and lowest low in a lookback window. ChartSchool documents that calculation directly; the MQL5 reference likewise exposes a K period, a D period and smoothing as explicit indicator inputs (StockCharts: stochastic calculation, MQL5: iStochastic inputs).
%K = (close - lowest low) / (highest high - lowest low) × 100
%D = a moving average of %K
close near the range high -> %K near 100
close near the range low -> %K near 0
The scale is bounded from 0 to 100 because it is a position inside the selected range, not a measure of price in currency or points. A reading above 50 means the close is in the upper half of that particular range; it says nothing by itself about the next bar (StockCharts: range interpretation, MQL5: K, D and slowing parameters).
Fast, slow and full are different rules
Fast stochastic uses the basic %K and then smooths it into %D. Slow stochastic smooths %K first; full stochastic makes the lookback and both smoothing choices adjustable (StockCharts: fast, slow and full versions, cTrader Algo: StochasticOscillator parameters).
That is not a cosmetic choice. The cTrader API names kPeriods, kSlowing, dPeriods, and the moving-average type; MQL5 separately exposes K period, D period, slowing and price field. A platform therefore does not supply one immutable “stochastic signal.” It supplies a family of calculations whose responsiveness changes with the parameters (cTrader Algo: StochasticOscillator, MQL5: iStochastic parameters).
| Choice | What changes | The cost of the choice |
|---|---|---|
| Shorter lookback | The range updates faster | More noisy swings and more candidate signals |
| Longer lookback | The range changes more slowly | Later responses to a changed market |
| More smoothing | %K and %D move less sharply | A signal arrives further from the move that created it |
The usual default labels are conventions, not evidence that a particular instrument, timeframe or cost model shares their behaviour. If a result appears only after selecting one lookback and smoothing combination, that selection process is part of the hypothesis and must be tested too.
What 80 and 20 actually say
Traditional stochastic charts mark 80 as “overbought” and 20 as “oversold.” In literal terms, above 80 means the close is near the top of the chosen range; below 20 means it is near the bottom. ChartSchool also warns that an instrument can remain overbought during a strong advance or oversold during a strong decline (StockCharts: overbought and oversold, MQL5: configurable stochastic inputs).
So “overbought” is a range-location label, not a sell instruction, and “oversold” is not a buy instruction. A %K/%D crossover or a divergence can be written as an objective event, but the surrounding choices still matter: which swing counts, when a bar is final, what happens in a trend, and how the position exits. The apparent clarity of two lines can conceal a lot of discretion.
This is closely related to the issue in RSI divergence. Both indicators can make hindsight attractive because the extreme is obvious after the turn. The only fair question is whether the rule was available and fully specified before that turn.
What the oscillator cannot prove
The stochastic oscillator contains no information beyond the price range and settings used to compute it. It does not identify why a market moved, establish a future reversal, or account for spread, slippage, commission, or an exit rule.
It also has an unavoidable timing trade-off. Smoothing reduces the visual jumpiness of the line, but it relies on more prior observations. That is why the same platform documentation offers separate smoothing inputs, and why ChartSchool distinguishes fast, slow and full variants rather than presenting a single canonical reading (cTrader Algo: configurable smoothing, StockCharts: stochastic variants).
None of that makes the indicator useless. It makes it a component. A component earns a place in a method only if it improves a defined rule after the choices and costs are made visible.
How you'd actually test it
Do not test whether “stochastics work.” Test a small claim that can fail. For example: “For one named market and timeframe, a closed-bar %K crossing above %D below a pre-set range threshold changes the outcome of a pre-defined entry rule.”
| Part of the test | Fix it before looking at results |
|---|---|
| Data | Instrument, feed, timeframe, timezone and date range |
| Indicator | Fast, slow or full version; K, slowing, D, moving-average type and price field |
| Signal | Exact crossover, threshold, bar-close timing and treatment of simultaneous signals |
| Trade rule | Entry, stop loss, exit, sizing and maximum holding time |
| Execution | Spread, commission, slippage, swap and unavailable hours |
| Evaluation | In-sample design period, untouched out-of-sample period and a baseline without the filter |
Compare the frozen base rule with the identical rule that includes the oscillator condition. Keep the trade count and the whole result distribution. Then test sensible nearby parameter choices without promoting the best historical cell to a discovery. Out-of-sample testing explains why unseen data matters; parameter sensitivity explains why one neat setting is weak evidence; real trading costs explains why friction belongs in the result.
realbacktesting is a trading-software studio for cTrader built around verifiable work: its published cBot figures are cTrader-native backtests that readers can reproduce in their own cTrader. The same standard applies here. Define the stochastic rule before the outcome, then let unseen data and realistic execution argue back.
Frequently asked
Does the stochastic oscillator predict reversals?
No. It describes the close's position within a chosen recent range. A reversal interpretation needs a separate, pre-defined rule and evidence from a test.
Is 80 overbought and 20 oversold a trading signal?
No. Those conventional levels describe a close near the top or bottom of the selected range. Price can remain near either extreme, so the levels alone do not establish an entry or exit.
Which stochastic setting is best?
There is no setting established by the indicator itself as best across markets and timeframes. The lookback and smoothing parameters are part of the rule and need to be fixed and tested together with it.
The stubborn takeaway
The stochastic oscillator is most honest when it makes a condition testable. The moment 80, 20 or a crossover becomes a verdict, the chart is doing more thinking than the method.