MovingAverages {TTR}R Documentation

Moving Averages

Description

Calculate various moving averages (MA) of a series.

Usage

  SMA(x, n=10)
  EMA(x, n=10, wilder=FALSE)
  WMA(x, n=10, wts=1:n)
 DEMA(x, n=10)
EVWMA(price, volume, n=10)
ZLEMA(x, n=10)

Arguments

x Vector to be averaged.
price Vector of prices to be averaged.
volume Volume series corresponding to price series, or a constant. See Notes.
n Number of periods to average over.
wts Vector of weights. Length of wts vector must equal the length of x, or n (the default).
wilder logical; if TRUE, a Welles Wilder type EMA will be calculated; see notes.

Details

SMA calculates the arithmetic mean of the series over the past n observations.

EMA calculates an exponentially-weighted mean, giving more weight to recent observations. See Warning section below.

WMA is similar to an EMA, but with linear weighting, if the length of wts is equal to n. If the length of wts is equal to the length of x, the WMA will the values of wts as weights.

DEMA is calculated as: DEMA = 2 * EMA(x,n) - EMA(EMA(x,n),n).

EVWMA uses volume to define the period of the MA.

ZLEMA is similar to an EMA, as it gives more weight to recent observations, but attempts to remove lag by subtracting data prior to (n-1)/2 periods to minimize the cumulative effect.

Value

SMA Simple moving average.
EMA Exponential moving average.
WMA Weighted moving average.
DEMA Double-exponential moving average.
EVWMA Elastic, volume-weighted moving average.
ZLEMA Zero lag exponential moving average.

Warning

Some indicators (e.g. EMA, DEMA, EVWMA, etc.) are calculated using the indicators' own previous values, and are therefore unstable in the short-term. As the indicator receives more data, its output becomes more stable. See example below.

Note

For EMA, wilder=FALSE (the default) uses an exponential smoothing ratio of 2/(n+1), while wilder=TRUE uses Welles Wilder's exponential smoothing ratio of 1/n.

Since WMA can accept a weight vector of length equal to the length of x or of length n, it can be used as a regular weighted moving average (in the case wts = 1:n) or as a moving average weighted by volume, another indicator, etc.

For EVWMA, if volume is a series, n should be chosen so the sum of the volume for n periods approximates the total number of outstanding shares for the security being averaged. If volume is a constant, it should represent the total number of outstanding shares for the security being averaged.

Author(s)

Josh Ulrich

References

The following site(s) were used to code/document this indicator:
http://www.fmlabs.com/reference/ExpMA.htm
http://www.fmlabs.com/reference/WeightedMA.htm
http://www.fmlabs.com/reference/DEMA.htm
http://linnsoft.com/tour/techind/evwma.htm
http://www.fmlabs.com/reference/ZeroLagExpMA.htm

See Also

See wilderSum, which is used in calculating a Welles Wilder type MA.

Examples

  data(ttrc)
    ema.20 <-   EMA(ttrc[,"Close"], 20)
    sma.20 <-   SMA(ttrc[,"Close"], 20)
   dema.20 <-  DEMA(ttrc[,"Close"], 20)
  evwma.20 <- EVWMA(ttrc[,"Close"], 20)
  zlema.20 <- ZLEMA(ttrc[,"Close"], 20)

  ## Example of short-term instability of EMA
  x <- rnorm(100)
  tail( EMA(x[90:100],10), 1 )
  tail( EMA(x[70:100],10), 1 )
  tail( EMA(x[50:100],10), 1 )
  tail( EMA(x[30:100],10), 1 )
  tail( EMA(x[10:100],10), 1 )
  tail( EMA(x[ 1:100],10), 1 )

[Package TTR version 0.13 Index]