declare lower;
def o = open(GetUnderlyingSymbol());
def c = close(GetUnderlyingSymbol());
def h = high(GetUnderlyingSymbol());
def l = low(GetUnderlyingSymbol());
def n = double.nan;
input displace = 0;
input length = 20;
input Num_Dev_Dn = -2.0;
input Num_Dev_up = 2.0;
input averageType = AverageType.SIMPLE;
def sDev = StDev(data = c[-displace], length = length);
plot MidLine = MovingAverage(averageType, data = c[-displace], length = length);
plot LowerBand = MidLine + Num_Dev_Dn * sDev;
plot UpperBand = MidLine + Num_Dev_up * sDev;
LowerBand.SetDefaultColor(GetColor(0));
MidLine.SetDefaultColor(GetColor(1));
UpperBand.SetDefaultColor(GetColor(5));
AddChart(high = if c > o then h else n,
low = if c > o then l else n,
close = if c > o then c else n,
open = if c > o then o else n,
ChartType.CANDLE, Color.GREEN);
AddChart(high = if c < o then h else n,
low = if c < o then l else n,
open = if c < o then o else n,
close = if c < o then c else n,
ChartType.CANDLE, Color.RED);
AddChart(high = if c == o then h else n,
low = if c == o then l else n,
open = if c == o then o else n,
close = if c == o then c else n,
ChartType.CANDLE, Color.WHITE);