Bollinger Bands®
Created by John Bollinger, Bollinger Bands price channels depict volatility as standard deviation boundary line range from a moving average of price. Bollinger Bands® is a registered trademark of John A. Bollinger. [Discuss] 💬

// C# usage syntax
IEnumerable<BollingerBandsResult> results =
quotes.GetBollingerBands(lookbackPeriods, standardDeviations);
Parameters
lookbackPeriods int - Number of periods (N) for the center line moving average. Must be greater than 1 to calculate; however we suggest a larger period for statistically appropriate sample size. Default is 20.
standardDeviations double - Width of bands. Standard deviations (D) from the moving average. Must be greater than 0. Default is 2.
Historical quotes requirements
You must have at least N periods of quotes to cover the warmup periods.
quotes is a collection of generic TQuote historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See the Guide for more information.
Response
IEnumerable<BollingerBandsResult>
- This method returns a time series of all available indicator values for the
quotesprovided. - It always returns the same number of elements as there are in the historical quotes.
- It does not return a single incremental indicator value.
- The first
N-1periods will havenullvalues since there’s not enough data to calculate.
BollingerBandsResult
Date DateTime - Date from evaluated TQuote
Sma double - Simple moving average (SMA) of price (center line)
UpperBand double - Upper line is D standard deviations above the SMA
LowerBand double - Lower line is D standard deviations below the SMA
PercentB double - %B is the location within the bands. (Price-LowerBand)/(UpperBand-LowerBand)
ZScore double - Z-Score of current price (number of standard deviations from mean)
Width double - Width as percent of SMA price. (UpperBand-LowerBand)/Sma
Utilities
See Utilities and helpers for more information.
Chaining
This indicator may be generated from any chain-enabled indicator or method.
// example
var results = quotes
.Use(CandlePart.HL2)
.GetBollingerBands(..);
Results can be further processed on PercentB with additional chain-enabled indicators.
// example
var results = quotes
.GetBollingerBands(..)
.GetRsi(..);