Collection of dynamic length adaptation algorithms. Mostly from various Adaptive Moving Averages (they are usually just EMA otherwise). Now you can combine Adaptations with any other Moving Averages or Oscillators (see my other libraries), to get something like Deviation Scaled RSI or Fractal Adaptive VWMA. This collection is not encyclopaedic. Suggestions are welcome.
chande(src, len, sdlen, smooth, power) Chande's Dynamic Length Parameters: src: Series to use len: Reference lookback length sdlen: Lookback length of Standard deviation smooth: Smoothing length of Standard deviation power: Exponent of the length adaptation (lower is smaller variation) Returns: Calculated period Taken from Chande's Dynamic Momentum Index (CDMI or DYMOI), which is dynamic RSI with this length Original default power value is 1, but I use 0.5 A variant of this algorithm is also included, where volume is used instead of price
vidya(src, len, dynLow) Variable Index Dynamic Average Indicator (VIDYA) Parameters: src: Series to use len: Reference lookback length dynLow: Lower bound for the dynamic length Returns: Calculated period Standard VIDYA algorithm. The period oscillates from the Lower Bound up (slow) I took the adaptation part, as it is just an EMA otherwise
vidyaRS(src, len, dynHigh) Relative Strength Dynamic Length - VIDYA RS Parameters: src: Series to use len: Reference lookback length dynHigh: Upper bound for the dynamic length Returns: Calculated period Based on Vitali Apirine's modification (Stocks and Commodities, January 2022) of VIDYA algorithm. The period oscillates from the Upper Bound down (fast) I took the adaptation part, as it is just an EMA otherwise
kaufman(src, len, dynLow, dynHigh) Kaufman Efficiency Scaling Parameters: src: Series to use len: Reference lookback length dynLow: Lower bound for the dynamic length dynHigh: Upper bound for the dynamic length Returns: Calculated period Based on Efficiency Ratio calculation orifinally used in Kaufman Adaptive Moving Average developed by Perry J. Kaufman I took the adaptation part, as it is just an EMA otherwise
ds(src, len) Deviation Scaling Parameters: src: Series to use len: Reference lookback length Returns: Calculated period Based on Derivation Scaled Super Smoother (DSSS) by John F. Ehlers Originally used with Super Smoother RMS originally has 50 bar lookback. Changed to 4x length for better flexibility. Could be wrong.
maa(src, len, threshold) Median Average Adaptation Parameters: src: Series to use len: Reference lookback length threshold: Adjustment threshold (lower is smaller length, default: 0.002, min: 0.0001) Returns: Calculated period Based on Median Average Adaptive Filter by John F. Ehlers Discovered and implemented by cheatcountry: I took the adaptation part, as it is just an EMA otherwise
fra(len, fc, sc) Fractal Adaptation Parameters: len: Reference lookback length fc: Fast constant (default: 1) sc: Slow constant (default: 200) Returns: Calculated period Based on FRAMA by John F. Ehlers Modified to allow lower and upper bounds by an unknown author I took the adaptation part, as it is just an EMA otherwise
mama(src, dynLow, dynHigh) MESA Adaptation - MAMA Alpha Parameters: src: Series to use dynLow: Lower bound for the dynamic length dynHigh: Upper bound for the dynamic length Returns: Calculated period Based on MESA Adaptive Moving Average by John F. Ehlers Introduced in the September 2001 issue of Stocks and Commodities Inspired by the everget implementation: I took the adaptation part, as it is just an EMA otherwise
doAdapt(type, src, len, dynLow, dynHigh, chandeSDLen, chandeSmooth, chandePower) Execute a particular Length Adaptation from the list Parameters: type: Length Adaptation type to use src: Series to use len: Reference lookback length dynLow: Lower bound for the dynamic length dynHigh: Upper bound for the dynamic length chandeSDLen: Lookback length of Standard deviation for Chande's Dynamic Length chandeSmooth: Smoothing length of Standard deviation for Chande's Dynamic Length chandePower: Exponent of the length adaptation for Chande's Dynamic Length (lower is smaller variation) Returns: Calculated period (float, not limited)
doMA(type, src, len) MA wrapper on wrapper: if DSSS is selected, calculate it here Parameters: type: MA type to use src: Series to use len: Filtering length Returns: Filtered series Demonstration of a combined indicator: Deviation Scaled Super Smoother
版本注释
v2 Correction for vidyaRS algorithm: Vitali Apirine used EMA for his calculations, but I used RMA by mistake
版本注释
v3 Updated vidyaRS to allow multiplier input in form of lower bound
版本注释
v4 New combined MA: Relative Strength Super Smoother based on Vitali Apirine's RS EMA, but with Super Smoother