Stochastic Oscillator

Created by George Lane, the Stochastic Oscillator, also known as KDJ Index, is a momentum oscillator that compares current price with recent highs and lows and is presented on a scale of 0 to 100. [Discuss] :speech_balloon:

chart for Stochastic Oscillator

// usage (standard)
IEnumerable<StochResult> results =
  quotes.GetStoch(lookbackPeriods, signalPeriods, smoothPeriods);

// advanced customization
IEnumerable<StochResult> results =
  quotes.GetStoch(lookbackPeriods, signalPeriods, smoothPeriods,
                  kFactor, dFactor, movingAverageType);


lookbackPeriods int - Lookback period (N) for the oscillator (%K). Must be greater than 0. Default is 14.

signalPeriods int - Smoothing period for the signal (%D). Must be greater than 0. Default is 3.

smoothPeriods int - Smoothing period (S) for the Oscillator (%K). “Slow” stochastic uses 3, “Fast” stochastic uses 1. Must be greater than 0. Default is 3.

kFactor double - Optional. Weight of %K in the %J calculation. Must be greater than 0. Default is 3.

dFactor double - Optional. Weight of %D in the %J calculation. Must be greater than 0. Default is 2.

movingAverageType MaType - Optional. Type of moving average (SMA or SMMA) used for smoothing. See MaType options below. Default is MaType.SMA.

Historical quotes requirements

You must have at least N+S periods of quotes to cover the warmup periods.

quotes is a collection of generic TQuote historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See the Guide for more information.

MaType options

These are the supported moving average types:

MaType.SMA - Simple Moving Average (default)

MaType.SMMA - Smoothed Moving Average



:hourglass: Convergence warning: The first N+100 periods will have decreasing magnitude, convergence-related precision errors that can be as high as ~5% deviation in indicator values for earlier periods when using MaType.SMMA. Standard use of MaType.SMA does not have convergence-related precision errors.


Date DateTime - Date from evaluated TQuote

Oscillator or K double - %K Oscillator

Signal or D double - %D Simple moving average of Oscillator

PercentJ or J double - %J is the weighted divergence of %K and %D: %J = kFactor × %K - dFactor × %D

Note: aliases of K, D, and J are also provided. They can be used interchangeably with the standard outputs.


See Utilities and helpers for more information.


Results can be further processed on Oscillator with additional chain-enabled indicators.

// example
var results = quotes

This indicator must be generated from quotes and cannot be generated from results of another chain-enabled indicator or method.