MovingAverages: Moving Averages

Description Usage Arguments Details Value Warning Note Author(s) References See Also Examples

Description

Calculate various moving averages (MA) of a series.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
  SMA(x, n = 10, ...)

  EMA(x, n = 10, wilder = FALSE, ratio = NULL, ...)

  DEMA(x, n = 10, v = 1, wilder = FALSE, ratio = NULL)

  WMA(x, n = 10, wts = 1:n, ...)

  EVWMA(price, volume, n = 10, ...)

  ZLEMA(x, n = 10, ratio = NULL, ...)

  VWAP(price, volume, n = 10, ...)

  VMA(x, w, ratio = 1, ...)

  HMA(x, n = 20, ...)

  ALMA(x, n = 9, offset = 0.85, sigma = 6, ...)

Arguments

x

Price, volume, etc. series that is coercible to xts or matrix.

price

Price series that is coercible to xts or matrix.

volume

Volume series that is coercible to xts or matrix, that corresponds to price series, or a constant. See Notes.

n

Number of periods to average over.

v

The 'volume factor' (a number in [0,1]). See Notes.

w

Vector of weights (in [0,1]) the same length as x.

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.

ratio

A smoothing/decay ratio. ratio overrides wilder in EMA, and provides additional smoothing in VMA.

offset

Percentile at which the center of the distribution should occur.

sigma

Standard deviation of the distribution.

...

any other passthrough parameters

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 use the values of wts as weights.

DEMA is calculated as: DEMA = (1 + v) * EMA(x,n) - EMA(EMA(x,n),n) * v (with the corresponding wilder and ratio arguments).

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 (default) to minimize the cumulative effect.

VWMA and VWAP calculate the volume-weighted moving average price.

VMA calculate a variable-length moving average based on the absolute value of w. Higher (lower) values of w will cause VMA to react faster (slower).

HMA a WMA of the difference of two other WMAs, making it very reponsive.

ALMA inspired by Gaussian filters. Tends to put less weight on most recent observations, reducing tendency to overshoot.

Value

A object of the same class as x or price or a vector (if try.xts fails) containing the columns:

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.

VWMA

Volume-weighed moving average (same as VWAP).

VWAP

Volume-weighed average price (same as VWMA).

VWA

Variable-length moving average.

HMA

Hull moving average.

ALMA

Arnaud Legoux 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.

Since DEMA allows adjusting v, it is technically Tim Tillson's generalized DEMA (GD). When v=1 (the default), the result is the standard DEMA. When v=0, the result is a regular EMA. All other values of v return the GD result. This function can be used to calculate Tillson's T3 indicator (see example below). Thanks to John Gavin for suggesting the generalization.

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)

Joshua Ulrich, Ivan Popivanov (HMA, ALMA)

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://www.fmlabs.com/reference/T3.htm
http://linnsoft.com/tour/techind/evwma.htm
http://www.fmlabs.com/reference/ZeroLagExpMA.htm
http://www.fmlabs.com/reference/VIDYA.htm
http://www.traderslog.com/hullmovingaverage
http://www.arnaudlegoux.com/

See Also

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

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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"], ttrc[,"Volume"], 20)
zlema.20 <- ZLEMA(ttrc[,"Close"], 20)
alma <- ALMA(ttrc[,"Close"])
hma <- HMA(ttrc[,"Close"])

## Example of Tim Tillson's T3 indicator
T3 <- function(x, n=10, v=1) DEMA(DEMA(DEMA(x,n,v),n,v),n,v)
t3 <- T3(ttrc[,"Close"])

## Example of short-term instability of EMA
## (and other indicators mentioned above)
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 )

Example output

[1] -0.009224177
[1] 0.06278615
[1] 0.06317008
[1] 0.06317313
[1] 0.06317295
[1] 0.06317295

TTR documentation built on April 15, 2017, 8:31 a.m.

Related to MovingAverages in TTR...