Calculate various moving averages (MA) of a series.

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

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`

, and provides additional smoothing in `VMA`

.

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.

w

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

.

offset

Percentile at which the center of the distribution should occur.

sigma

Standard deviation of the distribution.

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.

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.

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

The following site(s) were used to code/document this indicator: https://www.fmlabs.com/reference/ExpMA.htm https://www.fmlabs.com/reference/WeightedMA.htm https://www.fmlabs.com/reference/DEMA.htm https://www.fmlabs.com/reference/T3.htm https://www.linnsoft.com/techind/evwma-elastic-volume-weighted-moving-average https://www.fmlabs.com/reference/ZeroLagExpMA.htm https://www.fmlabs.com/reference/VIDYA.htm https://www.traderslog.com/hullmovingaverage https://web.archive.org/web/20180222085959/http://arnaudlegoux.com/

See `wilderSum`

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

# NOT RUN { 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 DataCamp Workspace