geom_bbands {tidyquant} | R Documentation |
Plot Bollinger Bands using Moving Averages
Description
Bollinger Bands plot a range around a moving average typically two standard deviations up and down.
The geom_bbands()
function enables plotting Bollinger Bands quickly using various moving average functions.
The moving average functions used are specified in TTR::SMA()
from the TTR package. Use coord_x_date()
to zoom into specific plot regions.
The following moving averages are available:
-
Simple moving averages (SMA): Rolling mean over a period defined by
n
. -
Exponential moving averages (EMA): Includes exponentially-weighted mean that gives more weight to recent observations. Uses
wilder
andratio
args. -
Weighted moving averages (WMA): Uses a set of weights,
wts
, to weight observations in the moving average. -
Double exponential moving averages (DEMA): Uses
v
volume factor,wilder
andratio
args. -
Zero-lag exponential moving averages (ZLEMA): Uses
wilder
andratio
args. -
Volume-weighted moving averages (VWMA): Requires
volume
aesthetic. -
Elastic, volume-weighted moving averages (EVWMA): Requires
volume
aesthetic.
Usage
geom_bbands(
mapping = NULL,
data = NULL,
position = "identity",
na.rm = TRUE,
show.legend = NA,
inherit.aes = TRUE,
ma_fun = SMA,
n = 20,
sd = 2,
wilder = FALSE,
ratio = NULL,
v = 1,
wts = 1:n,
color_ma = "darkblue",
color_bands = "red",
alpha = 0.15,
fill = "grey20",
...
)
geom_bbands_(
mapping = NULL,
data = NULL,
position = "identity",
na.rm = TRUE,
show.legend = NA,
inherit.aes = TRUE,
ma_fun = "SMA",
n = 10,
sd = 2,
wilder = FALSE,
ratio = NULL,
v = 1,
wts = 1:n,
color_ma = "darkblue",
color_bands = "red",
alpha = 0.15,
fill = "grey20",
...
)
Arguments
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
position |
Position adjustment, either as a string naming the adjustment
(e.g. |
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
ma_fun |
The function used to calculate the moving average. Seven options are
available including: SMA, EMA, WMA, DEMA, ZLEMA, VWMA, and EVWMA. The default is
|
n |
Number of periods to average over. Must be between 1 and
|
sd |
The number of standard deviations to use. |
wilder |
logical; if |
ratio |
A smoothing/decay ratio. |
v |
The 'volume factor' (a number in [0,1]). See Notes. |
wts |
Vector of weights. Length of |
color_ma , color_bands |
Select the line color to be applied for the moving average line and the Bollinger band line. |
alpha |
Used to adjust the alpha transparency for the BBand ribbon. |
fill |
Used to adjust the fill color for the BBand ribbon. |
... |
Other arguments passed on to |
Aesthetics
The following aesthetics are understood (required are in bold):
-
x
, Typically a date -
high
, Required to be the high price -
low
, Required to be the low price -
close
, Required to be the close price -
volume
, Required for VWMA and EVWMA -
colour
, Affects line colors -
fill
, Affects ribbon fill color -
alpha
, Affects ribbon alpha value -
group
-
linetype
-
size
See Also
See individual modeling functions for underlying parameters:
-
TTR::SMA()
for simple moving averages -
TTR::EMA()
for exponential moving averages -
TTR::WMA()
for weighted moving averages -
TTR::DEMA()
for double exponential moving averages -
TTR::ZLEMA()
for zero-lag exponential moving averages -
TTR::VWMA()
for volume-weighted moving averages -
TTR::EVWMA()
for elastic, volume-weighted moving averages -
coord_x_date()
for zooming into specific regions of a plot
Examples
# Load libraries
library(tidyquant)
library(dplyr)
library(ggplot2)
AAPL <- tq_get("AAPL", from = "2013-01-01", to = "2016-12-31")
# SMA
AAPL %>%
ggplot(aes(x = date, y = close)) +
geom_line() + # Plot stock price
geom_bbands(aes(high = high, low = low, close = close), ma_fun = SMA, n = 50) +
coord_x_date(xlim = c(as_date("2016-12-31") - dyears(1), as_date("2016-12-31")),
ylim = c(75, 125))
# EMA
AAPL %>%
ggplot(aes(x = date, y = close)) +
geom_line() + # Plot stock price
geom_bbands(aes(high = high, low = low, close = close),
ma_fun = EMA, wilder = TRUE, ratio = NULL, n = 50) +
coord_x_date(xlim = c(as_date("2016-12-31") - dyears(1), as_date("2016-12-31")),
ylim = c(75, 125))
# VWMA
AAPL %>%
ggplot(aes(x = date, y = close)) +
geom_line() + # Plot stock price
geom_bbands(aes(high = high, low = low, close = close, volume = volume),
ma_fun = VWMA, n = 50) +
coord_x_date(xlim = c(as_date("2016-12-31") - dyears(1), as_date("2016-12-31")),
ylim = c(75, 125))