View source: R/ggplot-geom_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
exponentially-weighted 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.
Zero-lag exponential moving averages (ZLEMA):
Uses wilder and ratio args.
Volume-weighted moving averages (VWMA):
Requires volume aesthetic.
Elastic, volume-weighted 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 |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
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 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
library(dplyr)
library(ggplot2)
library(lubridate)
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(20, 35))
# 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(20, 35))
# 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(20, 35))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.