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] 💬

chart for Bollinger Bands®

// C# usage syntax
IEnumerable<BollingerBandsResult> results =
  quotes.GetBollingerBands(lookbackPeriods, standardDeviations);


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.




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


See Utilities and helpers for more information.


This indicator may be generated from any chain-enabled indicator or method.

// example
var results = quotes

Results can be further processed on PercentB with additional chain-enabled indicators.

// example
var results = quotes