Kaufman’s Adaptive Moving Average (KAMA)
Created by Perry Kaufman, KAMA is an volatility adaptive moving average of price over configurable lookback periods. [Discuss]
// usage IEnumerable<KamaResult> results = quotes.GetKama(erPeriods, fastPeriods, slowPeriods);
int - Number of Efficiency Ratio (volatility) periods (
E). Must be greater than 0. Default is 10.
int - Number of Fast EMA periods. Must be greater than 0. Default is 2.
int - Number of Slow EMA periods. Must be greater than
fastPeriods. Default is 30.
Historical quotes requirements
You must have at least
E+100 periods of
quotes, whichever is more, to cover the convergence periods. Since this uses a smoothing technique, we recommend you use at least
10×E data points prior to the intended usage date for better precision.
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.
- This method returns a time series of all available indicator values for the
- It always returns the same number of elements as there are in the historical quotes.
- It does not return a single incremental indicator value.
- The first
E-1periods will have
nullvalues since there’s not enough data to calculate.
Convergence warning: The first
10×Eperiods will have decreasing magnitude, convergence-related precision errors that can be as high as ~5% deviation in indicator values for earlier periods.
DateTime - Date from evaluated
double - Efficiency Ratio is the fractal efficiency of price changes
double - Kaufman’s adaptive moving average
More about Efficiency Ratio: ER fluctuates between 0 and 1, but these extremes are the exception, not the norm. ER would be 1 if prices moved up or down consistently over the
erPeriods window. ER would be zero if prices are unchanged over the
See Utilities and helpers for more information.
This indicator may be generated from any chain-enabled indicator or method.
// example var results = quotes .Use(CandlePart.HL2) .GetKama(..);
Results can be further processed on
Kama with additional chain-enabled indicators.
// example var results = quotes .GetKama(..) .GetRsi(..);