PINE LIBRARY

MovingAverages

Updated
Library "MovingAverages"
Contains utilities for generating moving average values including getting a moving average by name and a function for generating a Volume-Adjusted WMA.

vawma(len, src, volumeDefault) VAWMA = VWMA and WMA combined. Simply put, this attempts to determine the average price per share over time weighted heavier for recent values. Uses a triangular algorithm to taper off values in the past (same as WMA does).
Parameters:
  • len: The number of bars to measure with.
  • src: The series to measure from. Default is 'hlc3'.
  • volumeDefault: The default value to use when a chart has no (N/A) volume.

Returns: The volume adjusted triangular weighted moving average of the series.

getMA(mode, len, src) Generates a moving average based upon a 'mode'.
Parameters:
  • mode: The type of moving average to generate. Values allowed are: SMA, EMA, WMA, VWMA and VAWMA.
  • len: The number of bars to measure with.
  • src: The series to measure from. Default is 'close'.

Returns: The volume adjusted triangular weighted moving average of the series.
Release Notes
Library "MovingAverages"
Contains utilities for generating moving average values including getting a moving average by name and a function for generating a Volume-Adjusted WMA.

vawma(len, src, volumeDefault) VAWMA = VWMA and WMA combined. Simply put, this attempts to determine the average price per share over time weighted heavier for recent values. Uses a triangular algorithm to taper off values in the past (same as WMA does).
Parameters:
  • len: The number of bars to measure with.
  • src: The series to measure from. Default is 'hlc3'.
  • volumeDefault: The default value to use when a chart has no (N/A) volume.

Returns: The volume adjusted triangular weighted moving average of the series.

getMA(mode, len, src) Generates a moving average based upon a 'mode'.
Parameters:
  • mode: The type of moving average to generate. Values allowed are: SMA, EMA, WMA, VWMA and VAWMA.
  • len: The number of bars to measure with.
  • src: The series to measure from. Default is 'close'.

Returns: The volume adjusted triangular weighted moving average of the series.
Release Notes
v3

  • Revised to use .get() as prefix will always be present.
  • Switched to switch statement with runtime error.
  • Migrated to single quote standard.


Added:
get(type, len, src) Generates a moving average based upon a 'type'.
  Parameters:
    type: The type of moving average to generate. Values allowed are: SMA, EMA, WMA, VWMA and VAWMA.
    len: The number of bars to measure with.
    src: The series to measure from. Default is 'close'.
  Returns: The moving average series requested.

Removed:
getMA(mode, len, src) Generates a moving average based upon a 'mode'.
Release Notes
v4 Added CMA

Added:
cma(n, D, C, compound) CMA is a variation of a moving average that can simulate SMA or WMA with the advantage of previous data. ifta.org/wp-content/uploads/2020/10/d_ifta_journal_21.pdf
  Parameters:
    n: The number of bars to measure with.
    D: The series to measure from. Default is 'close'.
    C: The coefficient to use when averaging. 0 behaves like SMA, 1 behaves like WMA.
    compound: When true (default is false) will use a compounding method for weighting the average.
Release Notes
v5 More robust and flexible VAWMA calculation.

Updated:
vawma(len, src, volumeDefault) VAWMA = VWMA and WMA combined. Simply put, this attempts to determine the average price per share over time weighted heavier for recent values. Uses a triangular algorithm to taper off values in the past (same as WMA does).
  Parameters:
    len: The number of bars to measure with.
    src: The series to measure from. Default is 'hlc3'.
    volumeDefault: The default value to use when a chart has no (N/A) volume.
  Returns: The volume adjusted triangular weighted moving average of the series.
Release Notes
v6 Improved robustness of moving averages and included alternates for ema, wma, and vwma.

Added:
ema(len, src) Same as ta.ema(src,len) but properly ignores NA values.
  Parameters:
    len: The number of samples to derive the average from.
    src: The series to measure from. Default is 'close'.

wma(len, src, startingWeight) Same as ta.wma(src,len) but properly ignores NA values.
  Parameters:
    len: The number of samples to derive the average from.
    src: The series to measure from. Default is 'close'.
    startingWeight: The weight to begin with when calculating the average. Higher numbers will decrease the bias.

vwma(len, src, volumeDefault) Same as ta.vwma(src,len) but properly ignores NA values.
  Parameters:
    len: The number of bars to measure with.
    src: The series to measure from. Default is 'hlc3'.
    volumeDefault: The default value to use when a chart has no (N/A) volume.
Release Notes
v7 Fixed plot titles.
Release Notes
v8 Simplified ema calculation.
Release Notes
v9 Removed need for for loop from vwma.
Release Notes
v10 Improved ema and vmwa to be more resilient.
Release Notes
v11

Added:
rsvwma(transferRatio, releaseRatio, useTime, src, vol)
  This is experimental moving average doesn't use a period/length but instead buffers the price per share and transfers that price per share at a given ratio per bar while also releasing the previous values at a decay ratio.
  Parameters:
    transferRatio: The ratio at which buffered data is applied to the average.
    releaseRatio: The ratio at which data is released from the average.
    useTime: When true will tend to make the values consistent across timeframes.
    src: The series to measure from. Default is 'hlc3'.
    vol: The series to represent volume. The default is 'volume'.
Release Notes
v12 Fix NA handling of rsvwma
Release Notes
v13 Added normalizeSlope function.
smatechindicatorvawmavolumeweightedaveragepricevolumeweightedmovingaverage

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