Skip to contents

bollinger_bands() is a generic S3 function that preserves the input class: data.frame in, data.frame out; matrix in, matrix out.

bollinger_bands() also accepts a double vector, in which case the indicator is calculated directly without column selection. When the result has a single column it is simplified to a double vector; otherwise the full n by k matrix is returned.

Handling of -values

Leading NAs are always produced for the initial lookback period where insufficient data is available. If the input itself contains NAs they are passed through to the underlying C routine, which can cause the entire output to be filled with NAs. Set na.ignore = TRUE to strip NAs before calculation and re-insert them at their original positions in the output.

Usage

bollinger_bands(
  x,
  cols,
  ma = SMA(n = 10),
  sd = 2,
  sd_down,
  sd_up,
  na.ignore = FALSE,
  ...
)

Arguments

x

An OHLC-V series coercible to data.frame. Alternatively, x may also be supplied as a double vector.

cols

(formula). An optional 1-variable formula selecting columns from x via model.frame. Defaults to ~close.

ma

(list). The type of Moving Average (MA) used for the MiddleBand. SMA by default.

sd

(double). Deviation multiplier for the upper and lower band.

sd_down

(double). Optional. Deviation multiplier for lower band

sd_up

(double). Optional. Deviation multiplier for upper band

na.ignore

(logical). A logical of length 1. FALSE by default. If TRUE, NAs in the input are stripped before calculation and re-inserted at their original positions in the output.

...

Additional parameters passed into model.frame

Value

An object of same class and length of x:

UpperBand

double

MiddleBand

double

LowerBand

double

Author

Serkan Korkmaz

Examples

## load Bitcoin (BTC)
## series
data(BTC, package = "talib")

## calculate the indicator
## for Bitcoin (BTC)
output <- talib::bollinger_bands(BTC)

## display the results
utils::tail(output)
#>                     UpperBand MiddleBand LowerBand
#> 2024-12-26 01:00:00 104478.35   98217.88  91957.42
#> 2024-12-27 01:00:00 100877.73   97020.16  93162.59
#> 2024-12-28 01:00:00  99886.22   96516.01  93145.81
#> 2024-12-29 01:00:00  99871.12   96134.41  92397.71
#> 2024-12-30 01:00:00  99713.92   95620.42  91526.92
#> 2024-12-31 01:00:00  99373.89   95236.42  91098.95

## visualize the indicator
## with talib::chart()
##
## see ?talib::chart or ?talib::indicator
## for more details
{
 ## chart OHLC-V
 ## series with talib::chart()
 talib::chart(BTC)

 ## chart indicator
 ## with default values
 talib::indicator(
     talib::bollinger_bands
 )
}