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, ...)
Price, volume, etc. series that is coercible to xts or matrix.
Number of periods to average over. Must be between 1 and
nrow(x)
, inclusive.
any other passthrough parameters
logical; if TRUE
, a Welles Wilder type EMA will be
calculated; see notes.
A smoothing/decay ratio. ratio
overrides wilder
in EMA
, and provides additional smoothing in VMA
.
The 'volume factor' (a number in [0,1]). See Notes.
Vector of weights. Length of wts
vector must equal the
length of x
, or n
(the default).
Price series that is coercible to xts or matrix.
Volume series that is coercible to xts or matrix, that corresponds to price series, or a constant. See Notes.
Vector of weights (in [0,1]) the same length as x
.
Percentile at which the center of the distribution should occur.
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:
Simple moving average.
Exponential moving average.
Weighted moving average.
Double-exponential moving average.
Elastic, volume-weighted moving average.
Zero lag exponential moving average.
Volume-weighed moving average (same as VWAP
).
Volume-weighed average price (same as VWMA
).
Variable-length moving average.
Hull moving average.
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