Description Usage Arguments Details Value Warning Note Author(s) References See Also Examples
Calculate various moving averages (MA) of a series.
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, ...)
|
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
|
wts |
Vector of weights. Length of |
wilder |
logical; if |
ratio |
A smoothing/decay ratio. |
offset |
Percentile at which the center of the distribution should occur. |
sigma |
Standard deviation of the distribution. |
... |
any other passthrough parameters |
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.
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.
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.
Joshua Ulrich, Ivan Popivanov (HMA, ALMA)
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 wilderSum
, which is used in calculating
a Welles Wilder type MA.
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 )
|
[1] -0.009224177
[1] 0.06278615
[1] 0.06317008
[1] 0.06317313
[1] 0.06317295
[1] 0.06317295
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.