# MovingAverages: Moving Averages In TTR: Technical Trading Rules

 SMA R Documentation

## Moving Averages

### Description

Calculate various moving averages (MA) of a series.

### Usage

``````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, ...)

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. `n` Number of periods to average over. Must be between 1 and `nrow(x)`, inclusive. `...` any other passthrough parameters `wilder` logical; if `TRUE`, a Welles Wilder type EMA will be calculated; see notes. `ratio` A smoothing/decay ratio. `ratio` overrides `wilder` in `EMA`. `v` The 'volume factor' (a number in [0,1]). See Notes. `wts` Vector of weights. Length of `wts` vector must equal the length of `x`, or `n` (the default). `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. `offset` Percentile at which the center of the distribution should occur. `sigma` Standard deviation of the distribution.

### 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.

`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`. The `EMA` result is initialized with the `n`-period sample average at period `n`. The exponential decay is applied from that point forward.

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

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"], 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 )

``````

TTR documentation built on May 29, 2024, 3:54 a.m.