BollingerBands Summary Bollinger Bands are used to confirm signals. The bands indicate overbought and oversold levels relative to a moving average.
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.
Signature
public abstract interface BollingerBands
Namespace cAlgo.API.Indicators
Examples Example 1 Example 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 //...
[Robot]
public class SampleRobot : Robot
//...
[Parameter("Source")]
public DataSeries Source { get ; set ; }
[Parameter("BandPeriods", DefaultValue = 14)]
public int BandPeriod { get ; set ; }
[Parameter("Std", DefaultValue = 14)]
public int std { get ; set ; }
[Parameter("MAType")]
public MovingAverageType MAType { get ; set ; }
//...
private BollingerBands boll ;
//...
protected override void OnStart ()
{
boll = Indicators . BollingerBands ( Source , BandPeriod , std , MAType );
}
protected override void OnBar ()
{
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 );
}
//...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 using cAlgo.API ;
using cAlgo.API.Indicators ;
namespace cAlgo.Robots
{
///
/// This sample cBot shows how to use the Bollinger Bands indicator
///
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class BollingerBandsSample : Robot
{
private double _volumeInUnits ;
private BollingerBands _bollingerBands ;
[Parameter("Volume (Lots)", DefaultValue = 0.01)]
public double VolumeInLots { get ; set ; }
[Parameter("Label", DefaultValue = "Sample")]
public string Label { get ; set ; }
[Parameter("Source")]
public DataSeries Source { get ; set ; }
public Position [] BotPositions
{
get
{
return Positions . FindAll ( Label );
}
}
protected override void OnStart ()
{
_volumeInUnits = Symbol . QuantityToVolumeInUnits ( VolumeInLots );
_bollingerBands = Indicators . BollingerBands ( Source , 14 , 2 , MovingAverageType . Exponential );
}
protected override void OnBar ()
{
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 );
}
else if ( 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 );
}
}
private void ClosePositions ( TradeType tradeType )
{
foreach ( var position in BotPositions )
{
if ( position . TradeType != tradeType ) continue ;
ClosePosition ( position );
}
}
}
}
Properties Main Summary
Moving Average (Middle Bollinger Band).
Signature
public abstract IndicatorDataSeries Main { get ;}
Return Value
IndicatorDataSeries
Examples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 //...
[Robot]
public class SampleRobot : Robot
//...
[Parameter("Source")]
public DataSeries Source { get ; set ; }
[Parameter("BandPeriods", DefaultValue = 14)]
public int BandPeriod { get ; set ; }
[Parameter("Std", DefaultValue = 14)]
public int std { get ; set ; }
[Parameter("MAType")]
public MovingAverageType MAType { get ; set ; }
//...
private BollingerBands boll ;
//...
protected override void OnStart ()
{
boll = Indicators . BollingerBands ( Source , BandPeriod , std , MAType );
}
protected override void OnBar ()
{
Print ( "Current Main Bollinger Band's price is: {0}" , boll . Main . LastValue );
}
//...
Top Summary
Upper Bollinger Band.
Signature
public abstract IndicatorDataSeries Top { get ;}
Return Value
IndicatorDataSeries
Examples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 //...
[Robot]
public class SampleRobot : Robot
//...
[Parameter("Source")]
public DataSeries Source { get ; set ; }
[Parameter("BandPeriods", DefaultValue = 14)]
public int BandPeriod { get ; set ; }
[Parameter("Std", DefaultValue = 14)]
public int std { get ; set ; }
[Parameter("MAType")]
public MovingAverageType MAType { get ; set ; }
//...
private BollingerBands boll ;
//...
protected override void OnStart ()
{
boll = Indicators . BollingerBands ( Source , BandPeriod , std , MAType );
}
protected override void OnBar ()
{
Print ( "Current Top Bollinger Band's price is: {0}" , boll . Top . LastValue );
}
//...
Bottom Summary
Lower Bollinger Band.
Signature
public abstract IndicatorDataSeries Bottom { get ;}
Return Value
IndicatorDataSeries
Examples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 //...
[Parameter("Source")]
public DataSeries Source { get ; set ; }
[Parameter("BandPeriods", DefaultValue = 14)]
public int BandPeriod { get ; set ; }
[Parameter("Std", DefaultValue = 14)]
public int std { get ; set ; }
[Parameter("MAType")]
public MovingAverageType MAType { get ; set ; }
//...
private BollingerBands boll ;
//...
protected override void OnStart ()
{
boll = Indicators . BollingerBands ( Source , BandPeriod , std , MAType );
}
protected override void OnBar ()
{
Print ( "Current Bottom Bollinger Band's price is: {0}" , boll . Bottom . LastValue );
}
//...