PINE LIBRARY

f_maSelect

Updated
Library "f_maSelect"
Easy to use drop-in facade function to lots of different moving average calculations, including some that are not natively available in PineScript v5 such as Zero-Lag EMA. Simply call f_maSelect(series float serie, simple string ma_type="sma", ma_length=14) instead of a ta.*ma() call and you get access to all MAs offered by PineScript and more.

zema(src, len)
  Zero-lag EMA (ZLMA)
  Parameters:
    src: Input series
    len: Lookback period
  Returns: Series smoothed with ZLMA

approximate_sma(x, ma_length)
  Approximate Standard Moving Average, which substracts the average instead of popping the oldest element, hence losing the base frequency and is why it is approximative. For some reason, this appears to give the same results as a standard RMA
  Parameters:
    x: Input series.
    ma_length: Lookback period.
  Returns: Approximate SMA series.

f_maSelect(serie, ma_type, ma_length)
  Generalized moving average selector
  Parameters:
    serie: Input series
    ma_type: String describing which moving average to use
    ma_length: Lookback period
  Returns: Serie smoothed with the selected moving average.

generalized_dev(src, length, avg, lmode)
  Generalized deviation calculation: Whereas other Bollinger Bands often just change the basis but not the stdev calculation, the correct way to change the basis is to also change it inside the stdev calculation.
  Parameters:
    src: Series to use (default: close)
    length: Lookback period
    avg: Average basis to use to calculate the standard deviation
    lmode: L1 or L2 regularization? (ie, lmode=1 uses abs() to cutoff negative values hence it calculates the Mean Absolute Deviation as does the ta.dev(), lmode=2 uses sum of squares hence it calculates the true Standard Deviation as the ta.stdev() function does). See also the research works of everget:
[RESEARCH] Mean Absolute Deviation

  Returns: stdev Standard deviation series

generalized_dev_discount(src, length, avg, lmode, temporal_discount)
  Standard deviation calculation but with different probabilities assigned to each bar, with newer bars having more weights en.wikipedia.org/wiki/Standard_deviation
  Parameters:
    src: Series to use (default: close)
    length: Lookback period
    avg: Average basis to use to calculate the standard deviation
    lmode: L1 or L2 regularization? (ie, lmode=1 uses abs() to cutoff negative values hence it calculates the Mean Absolute Deviation as does the ta.dev(), lmode=2 uses sum of squares hence it calculates the true Standard Deviation as the ta.stdev() function does). See also the research works of everget:
[RESEARCH] Mean Absolute Deviation

    temporal_discount: Probabilistic gamma factor to discount old values in favor of new ones, higher value = more weight to newer bars
  Returns: stdev Standard deviation series

median_absdev(src, length, median)
  Median Absolute Deviation
  Parameters:
    src: Input series
    length: Lookback period
    median: Median already calculated on the input series
  Returns: mad, the median absolute deviation value
Release Notes
* Minor changes in text (remove unnecessary references to Bollinger Bands)
colorsinputsmoving_averagetechindicator

Pine library

In true TradingView spirit, the author has published this Pine code as an open-source library so that other Pine programmers from our community can reuse it. Cheers to the author! You may use this library privately or in other open-source publications, but reuse of this code in a publication is governed by House rules.

Disclaimer