View source: R/ggplotgeom_bbands.R
geom_bbands  R Documentation 
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
exponentiallyweighted mean that gives more weight to recent observations.
Uses wilder
and ratio
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
and ratio
args.
Zerolag exponential moving averages (ZLEMA):
Uses wilder
and ratio
args.
Volumeweighted moving averages (VWMA):
Requires volume
aesthetic.
Elastic, volumeweighted moving averages (EVWMA):
Requires volume
aesthetic.
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",
...
)
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 
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 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 zerolag exponential moving averages
TTR::VWMA()
for volumeweighted moving averages
TTR::EVWMA()
for elastic, volumeweighted moving averages
coord_x_date()
for zooming into specific regions of a plot
# Load libraries
library(tidyquant)
library(dplyr)
library(ggplot2)
AAPL < tq_get("AAPL", from = "20130101", to = "20161231")
# 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("20161231")  dyears(1), as_date("20161231")),
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("20161231")  dyears(1), as_date("20161231")),
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("20161231")  dyears(1), as_date("20161231")),
ylim = c(75, 125))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.