TTR (version 0.24.4)

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

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

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

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

## Author

Joshua Ulrich, Ivan Popivanov (HMA, ALMA)

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

## References

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

## Examples

Run this code
``````
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 )

``````

Run the code above in your browser using DataLab