Bollinger Bands are used to confirm signals. The bands indicate overbought and oversold levels relative to a moving average.
Remarks
Bollinger bands widen in volatile market periods, and contract during less volatile periods. Tightening of the bands is often used a signal that there will shortly be a sharp increase in market volatility.
//...[Robot]publicclassSampleRobot:Robot//...[Parameter("Source")]publicDataSeriesSource{get;set;}[Parameter("BandPeriods", DefaultValue = 14)]publicintBandPeriod{get;set;}[Parameter("Std", DefaultValue = 14)]publicintstd{get;set;}[Parameter("MAType")]publicMovingAverageTypeMAType{get;set;}//...privateBollingerBandsboll;//...protectedoverridevoidOnStart(){boll=Indicators.BollingerBands(Source,BandPeriod,std,MAType);}protectedoverridevoidOnBar(){Print("Current Main Bollinger Band's price is: {0}",boll.Main.LastValue);Print("Current Bottom Bollinger Band's price is: {0}",boll.Bottom.LastValue);Print("Current Top Bollinger Band's price is: {0}",boll.Top.LastValue);}//...
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{/// /// This sample cBot shows how to use the Bollinger Bands indicator/// [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassBollingerBandsSample:Robot{privatedouble_volumeInUnits;privateBollingerBands_bollingerBands;[Parameter("Volume (Lots)", DefaultValue = 0.01)]publicdoubleVolumeInLots{get;set;}[Parameter("Label", DefaultValue = "Sample")]publicstringLabel{get;set;}[Parameter("Source")]publicDataSeriesSource{get;set;}publicPosition[]BotPositions{get{returnPositions.FindAll(Label);}}protectedoverridevoidOnStart(){_volumeInUnits=Symbol.QuantityToVolumeInUnits(VolumeInLots);_bollingerBands=Indicators.BollingerBands(Source,14,2,MovingAverageType.Exponential);}protectedoverridevoidOnBar(){if(Bars.LowPrices.Last(1)<=_bollingerBands.Bottom.Last(1)&&Bars.LowPrices.Last(2)>_bollingerBands.Bottom.Last(2)){ClosePositions(TradeType.Sell);ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label);}elseif(Bars.HighPrices.Last(1)>=_bollingerBands.Top.Last(1)&&Bars.HighPrices.Last(2)<_bollingerBands.Top.Last(2)){ClosePositions(TradeType.Buy);ExecuteMarketOrder(TradeType.Sell,SymbolName,_volumeInUnits,Label);}}privatevoidClosePositions(TradeTypetradeType){foreach(varpositioninBotPositions){if(position.TradeType!=tradeType)continue;ClosePosition(position);}}}}
1 2 3 4 5 6 7 8 91011121314
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classTest():defon_start(self):# Source, Periods, Std, and MaType are parameters defined in C# file of cBotself.bollingerBands=api.Indicators.BollingerBands(api.Source,api.Periods,api.Std,api.MaType)defon_bar(self):print(f"Current Main Bollinger Band's price is: {self.bollingerBands.Main.LastValue}")print(f"Current Bottom Bollinger Band's price is: {self.bollingerBands.Bottom.LastValue}")print(f"Current Top Bollinger Band's price is: {self.bollingerBands.Top.LastValue}")
""" VolumeInLots, Source, Periods, StandardDeviations, MaType, and Label are parameters defined in C# file of cBot. """importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classBollingerBandsSample():defon_start(self):self.volumeInUnits=api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)self.bollingerBands=api.Indicators.BollingerBands(api.Source,api.Periods,api.StandardDeviations,api.MaType)defon_bar_closed(self):ifapi.Bars.LowPrices.Last(0)<=self.bollingerBands.Bottom.Last(0)andapi.Bars.LowPrices.Last(1)>self.bollingerBands.Bottom.Last(1):self.close_positions(TradeType.Sell)api.ExecuteMarketOrder(TradeType.Buy,api.SymbolName,self.volumeInUnits,api.Label)elifapi.Bars.HighPrices.Last(0)>=self.bollingerBands.Top.Last(0)andapi.Bars.HighPrices.Last(1)<self.bollingerBands.Top.Last(1):self.close_positions(TradeType.Buy)api.ExecuteMarketOrder(TradeType.Sell,api.SymbolName,self.volumeInUnits,api.Label)defget_bot_positions(self):returnapi.Positions.FindAll(api.Label)defclose_positions(self,tradeType):forpositioninself.get_bot_positions():ifposition.TradeType!=tradeType:continueapi.ClosePosition(position)
Properties
Main
Summary
Moving Average (Middle Bollinger Band).
Signature
1
publicabstractIndicatorDataSeriesMain{get;}
Return Value
IndicatorDataSeries
Examples
1 2 3 4 5 6 7 8 9101112131415161718192021222324
//...[Robot]publicclassSampleRobot:Robot//...[Parameter("Source")]publicDataSeriesSource{get;set;}[Parameter("BandPeriods", DefaultValue = 14)]publicintBandPeriod{get;set;}[Parameter("Std", DefaultValue = 14)]publicintstd{get;set;}[Parameter("MAType")]publicMovingAverageTypeMAType{get;set;}//...privateBollingerBandsboll;//...protectedoverridevoidOnStart(){boll=Indicators.BollingerBands(Source,BandPeriod,std,MAType);}protectedoverridevoidOnBar(){Print("Current Main Bollinger Band's price is: {0}",boll.Main.LastValue);}//...
1 2 3 4 5 6 7 8 9101112
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classTest():defon_start(self):# Source, Periods, Std, and MaType are parameters defined in C# file of cBotself.bollingerBands=api.Indicators.BollingerBands(api.Source,api.Periods,api.Std,api.MaType)defon_bar(self):print(f"Current Main Bollinger Band's price is: {self.bollingerBands.Main.LastValue}")
Top
Summary
Upper Bollinger Band.
Signature
1
publicabstractIndicatorDataSeriesTop{get;}
Return Value
IndicatorDataSeries
Examples
1 2 3 4 5 6 7 8 9101112131415161718192021222324
//...[Robot]publicclassSampleRobot:Robot//...[Parameter("Source")]publicDataSeriesSource{get;set;}[Parameter("BandPeriods", DefaultValue = 14)]publicintBandPeriod{get;set;}[Parameter("Std", DefaultValue = 14)]publicintstd{get;set;}[Parameter("MAType")]publicMovingAverageTypeMAType{get;set;}//...privateBollingerBandsboll;//...protectedoverridevoidOnStart(){boll=Indicators.BollingerBands(Source,BandPeriod,std,MAType);}protectedoverridevoidOnBar(){Print("Current Top Bollinger Band's price is: {0}",boll.Top.LastValue);}//...
1 2 3 4 5 6 7 8 9101112
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classTest():defon_start(self):# Source, Periods, Std, and MaType are parameters defined in C# file of cBotself.bollingerBands=api.Indicators.BollingerBands(api.Source,api.Periods,api.Std,api.MaType)defon_bar(self):print(f"Current Top Bollinger Band's price is: {self.bollingerBands.Top.LastValue}")
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classTest():defon_start(self):# Source, Periods, Std, and MaType are parameters defined in C# file of cBotself.bollingerBands=api.Indicators.BollingerBands(api.Source,api.Periods,api.Std,api.MaType)defon_bar(self):print(f"Current Bottom Bollinger Band's price is: {self.bollingerBands.Bottom.LastValue}")