VWAP Standard Deviation Bands for ThinkorSwim

tomsk

Well-known member
VIP
Vide an earlier user request, I posted the following study in one of the sub forums, relocating it here for easier access/search

Code:
# VWAP Standard Deviation Bands
# lar
# 12.12.2015

# V1.0 - 12.12.2015 - lar     - Initial release of VWAP Standard Deviation bands
# V1.1 - 12.17.2019 - tomsk   - Minor edits

input timeFrame = {default Day, Week, Month, Year, Minute, Hour, Chart, "Opt Exp", Bar};
input BandType = {default Standard, "1/4 Day Range", "3x Avg Bar Range", ThinkScripter, None};
input ShowCloud = yes;
input HideSdLines = no;

def cap = GetAggregationPeriod();
def errorInAggregation =
    timeFrame == timeFrame.Day and cap >= AggregationPeriod.WEEK or
    timeFrame == timeFrame.Week and cap >= AggregationPeriod.MONTH;
Assert(!errorInAggregation, "timeFrame should be not less than current chart aggregation period");

def yyyyMmDd = GetYYYYMMDD();
def seconds = SecondsFromTime(0);
def month = GetYear() * 12 + GetMonth();
def year = GetYear();
def day_number = DaysFromDate(First(yyyyMmDd)) + GetDayOfWeek(First(yyyyMmDd));
def dom = GetDayOfMonth(yyyyMmDd);
def dow = GetDayOfWeek(yyyyMmDd - dom + 1);
def expthismonth = (if dow > 5 then 27 else 20) - dow;
def exp_opt = month + (dom > expthismonth);
def periodIndx;

switch (timeFrame) {
case Chart:
    periodIndx = 0;

case Minute:
    periodIndx = Floor(seconds / 60 + day_number * 24 * 60);

case Hour:
    periodIndx = Floor(seconds / 3600 + day_number * 24);

case Day:
    periodIndx = CountTradingDays(Min(First(yyyyMmDd), yyyyMmDd), yyyyMmDd) - 1;

case Week:
    periodIndx = Floor(day_number / 7);

case Month:
    periodIndx = Floor(month - First(month));

case Year:
    periodIndx = Floor(year - First(year));

case "Opt Exp":
    periodIndx = exp_opt - First(exp_opt);

case Bar:
    periodIndx = BarNumber() - 1;
}
def isPeriodRolled = CompoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;
def volumeVwapSum;
def volumeVwap2Sum;

if (isPeriodRolled) {
    volumeSum = volume;
    volumeVwapSum = volume * vwap;
    volumeVwap2Sum = volume * Sqr(vwap);
} else {
    volumeSum = compoundValue(1, volumeSum[1] + volume, volume);
    volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);
    volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));
}
def price = volumeVwapSum / volumeSum;

def deviation;
switch (BandType) {

case Standard:
    deviation = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

case "1/4 Day Range":
    deviation = Sqrt(AbsValue(high(Period = timeFrame) - low(Period = timeFrame)) * .25);

case "3x Avg Bar Range":
    deviation = Sqrt(Average(TrueRange(high,  close,  low),  20) * 3);

case ThinkScripter:
    deviation = Sqrt(TotalSum(Sqr(((open + high + low + close) / 4) - price) * volume) / TotalSum(volume));

case None:
    deviation = Double.NaN;
}

plot VWAP = price;
VWAP.AssignValueColor(if VWAP > VWAP[1] then Color.Cyan
                      else if VWAP < VWAP[1] then Color.Red
                      else Color.Yellow);
VWAP.SetStyle(Curve.SHORT_DASH);
VWAP.SetLineWeight(2);

# TS_CHART_VWAP_SD_BANDS
# http://www.thinkscripter.com
# [email protected]
# Last Update 03 APR 2010

input VWAPStdev1 = 1.0;
input VWAPStdev2 = 2.0;
input VWAPStdev3 = 3.0;

plot r1 = VWAP + VWAPStdev1 * deviation;
plot s1 = VWAP - VWAPStdev1 * deviation;
plot r2 = VWAP + VWAPStdev2 * deviation;
plot s2 = VWAP - VWAPStdev2 * deviation;
plot r3 = VWAP + VWAPStdev3 * deviation;
plot s3 = VWAP - VWAPStdev3 * deviation;

DefineGlobalColor("sDev1", (CreateColor(40, 40, 40)));
DefineGlobalColor("sDev2", (CreateColor(128, 128, 128)));
DefineGlobalColor("sDev3", (CreateColor(100, 100, 100)));

r1.SetDefaultColor(GlobalColor("sDev1"));
s1.SetDefaultColor(GlobalColor("sDev1"));
r2.SetDefaultColor(GlobalColor("sDev2"));
s2.SetDefaultColor(GlobalColor("sDev2"));
r3.SetDefaultColor(GlobalColor("sDev2"));
s3.SetDefaultColor(GlobalColor("sDev2"));

r1.SetStyle(Curve.SHORT_DASH);
r2.SetStyle(Curve.SHORT_DASH);
r3.SetStyle(Curve.SHORT_DASH);
s1.SetStyle(Curve.SHORT_DASH);
s2.SetStyle(Curve.SHORT_DASH);
s3.SetStyle(Curve.SHORT_DASH);

VWAP.HideBubble();
r1.HideBubble();
r2.HideBubble();
r3.HideBubble();
s1.HideBubble();
s2.HideBubble();
s3.HideBubble();

r1.SetHiding(HideSdLines);
r2.SetHiding(HideSdLines);
r3.SetHiding(HideSdLines);
s1.SetHiding(HideSdLines);
s2.SetHiding(HideSdLines);
s3.SetHiding(HideSdLines);

# CLOUD ##########################
def CloudR1 = if ShowCloud then r1 else Double.NaN;
def CloudR2 = if ShowCloud then r2 else Double.NaN;
def CloudR3 = if ShowCloud then r3 else Double.NaN;
def CloudS1 = if ShowCloud then s1 else Double.NaN;
def CloudS2 = if ShowCloud then s2 else Double.NaN;
def CloudS3 = if ShowCloud then s3 else Double.NaN;
AddCloud(CloudR1, CloudR2, GlobalColor("sDev1"), GlobalColor("sDev1"));
AddCloud(CloudS1, CloudS2, GlobalColor("sDev1"), GlobalColor("sDev1"));
AddCloud(CloudR2, CloudR3, GlobalColor("sDev2"), GlobalColor("sDev2"));
AddCloud(CloudS2, CloudS3, GlobalColor("sDev2"), GlobalColor("sDev2"));
# End VWAP Standard Deviation Bands
 
Last edited:

markos

Well-known member
VIP
@tomsk thanks for posting this. Don't know how I missed this. If you run into LAR on occasion, please be sure to say hi!
 

PaulB

New member
@tomsk . Very useful. Thank you! Can you tell me if it's possible to plot your study on a /ES chart, but displaying SPY's VWAP data? Or even just the SPY VWAP (without the standard deviation bands as that might be asking too much) on an /ES chart. Preferably on a tick chart, but 1 minute and up would be useful. Thanks! ....and sorry for the loss of your mother......paul
 

badger-man

New member
Hi there,

First time poster so excuse any lapse of etiquette.

Wondering if anyone has come across a custom VWAP indicator that supports more than just two standard deviations, e.g. at -2, -1, 1 and 2.

Thank you for any input you can provide.
 

markos

Well-known member
VIP
Hi there,

First time poster so excuse any lapse of etiquette.

Wondering if anyone has come across a custom VWAP indicator that supports more than just two standard deviations, e.g. at -2, -1, 1 and 2.

Thank you for any input you can provide.
Have you typed in VWAP in the Search? Also, there are a number of them in the One Note located in the Tutorials Section. Good luck.
 

BenTen

Administrative
Staff member
Staff
VIP
@badger-man Here you go:

Code:
# VWAP(2)
# Assembled by BenTen at UseThinkScript.com

input numDevDn = -2.0;
input numDevUp = 2.0;
input numDevDn1 = -1.0;
input numDevUp1 = 1.0;
input showCloud = yes;

input timeFrame = {default DAY, WEEK, MONTH};

def cap = getAggregationPeriod();
def errorInAggregation =
    timeFrame == timeFrame.DAY and cap >= AggregationPeriod.WEEK or
    timeFrame == timeFrame.WEEK and cap >= AggregationPeriod.MONTH;
assert(!errorInAggregation, "timeFrame should be not less than current chart aggregation period");

def yyyyMmDd = getYyyyMmDd();
def periodIndx;
switch (timeFrame) {
case DAY:
    periodIndx = yyyyMmDd;
case WEEK:
    periodIndx = Floor((daysFromDate(first(yyyyMmDd)) + getDayOfWeek(first(yyyyMmDd))) / 7);
case MONTH:
    periodIndx = roundDown(yyyyMmDd / 100, 0);
}
def isPeriodRolled = compoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;
def volumeVwapSum;
def volumeVwap2Sum;

if (isPeriodRolled) {
    volumeSum = volume;
    volumeVwapSum = volume * vwap;
    volumeVwap2Sum = volume * Sqr(vwap);
} else {
    volumeSum = compoundValue(1, volumeSum[1] + volume, volume);
    volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);
    volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));
}
def price = volumeVwapSum / volumeSum;
def deviation = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

plot VWAP = price;
plot UpperBand2 = price + numDevUp * deviation;
plot LowerBand2 = price + numDevDn * deviation;
plot UpperBand1 = price + numDevUp1 * deviation;
plot LowerBand1 = price + numDevDn1 * deviation;

VWAP.setDefaultColor(getColor(6));
UpperBand1.setDefaultColor(getColor(9));
UpperBand1.setStyle(Curve.SHORT_DASH);
LowerBand1.setDefaultColor(getColor(9));
LowerBand1.setStyle(Curve.SHORT_DASH);
UpperBand2.setDefaultColor(getColor(9));
LowerBand2.setDefaultColor(getColor(9));

AddCloud(if showCloud then UpperBand1 else Double.NaN, Upperband2, color.light_green, color.light_green);
AddCloud(if showCloud then LowerBand1 else Double.NaN, LowerBand2, color.light_red, color.light_red);
 

Thinker20

New member
Hello, does anyone know how can I extend the timeframes? For example, add quarterly and yearly timeframes; hope that you can help me with it, have a great day.
 

bryan1978

New member
Vide an earlier user request, I posted the following study in one of the sub forums, relocating it here for easier access/search

Code:
# VWAP Standard Deviation Bands
# lar
# 12.12.2015

# V1.0 - 12.12.2015 - lar     - Initial release of VWAP Standard Deviation bands
# V1.1 - 12.17.2019 - tomsk   - Minor edits

input timeFrame = {default Day, Week, Month, Year, Minute, Hour, Chart, "Opt Exp", Bar};
input BandType = {default Standard, "1/4 Day Range", "3x Avg Bar Range", ThinkScripter, None};
input ShowCloud = yes;
input HideSdLines = no;

def cap = GetAggregationPeriod();
def errorInAggregation =
    timeFrame == timeFrame.Day and cap >= AggregationPeriod.WEEK or
    timeFrame == timeFrame.Week and cap >= AggregationPeriod.MONTH;
Assert(!errorInAggregation, "timeFrame should be not less than current chart aggregation period");

def yyyyMmDd = GetYYYYMMDD();
def seconds = SecondsFromTime(0);
def month = GetYear() * 12 + GetMonth();
def year = GetYear();
def day_number = DaysFromDate(First(yyyyMmDd)) + GetDayOfWeek(First(yyyyMmDd));
def dom = GetDayOfMonth(yyyyMmDd);
def dow = GetDayOfWeek(yyyyMmDd - dom + 1);
def expthismonth = (if dow > 5 then 27 else 20) - dow;
def exp_opt = month + (dom > expthismonth);
def periodIndx;

switch (timeFrame) {
case Chart:
    periodIndx = 0;

case Minute:
    periodIndx = Floor(seconds / 60 + day_number * 24 * 60);

case Hour:
    periodIndx = Floor(seconds / 3600 + day_number * 24);

case Day:
    periodIndx = CountTradingDays(Min(First(yyyyMmDd), yyyyMmDd), yyyyMmDd) - 1;

case Week:
    periodIndx = Floor(day_number / 7);

case Month:
    periodIndx = Floor(month - First(month));

case Year:
    periodIndx = Floor(year - First(year));

case "Opt Exp":
    periodIndx = exp_opt - First(exp_opt);

case Bar:
    periodIndx = BarNumber() - 1;
}
def isPeriodRolled = CompoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;
def volumeVwapSum;
def volumeVwap2Sum;

if (isPeriodRolled) {
    volumeSum = volume;
    volumeVwapSum = volume * vwap;
    volumeVwap2Sum = volume * Sqr(vwap);
} else {
    volumeSum = compoundValue(1, volumeSum[1] + volume, volume);
    volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);
    volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));
}
def price = volumeVwapSum / volumeSum;

def deviation;
switch (BandType) {

case Standard:
    deviation = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

case "1/4 Day Range":
    deviation = Sqrt(AbsValue(high(Period = timeFrame) - low(Period = timeFrame)) * .25);

case "3x Avg Bar Range":
    deviation = Sqrt(Average(TrueRange(high,  close,  low),  20) * 3);

case ThinkScripter:
    deviation = Sqrt(TotalSum(Sqr(((open + high + low + close) / 4) - price) * volume) / TotalSum(volume));

case None:
    deviation = Double.NaN;
}

plot VWAP = price;
VWAP.AssignValueColor(if VWAP > VWAP[1] then Color.Cyan
                      else if VWAP < VWAP[1] then Color.Red
                      else Color.Yellow);
VWAP.SetStyle(Curve.SHORT_DASH);
VWAP.SetLineWeight(2);

# TS_CHART_VWAP_SD_BANDS
# http://www.thinkscripter.com
# [email protected]
# Last Update 03 APR 2010

input VWAPStdev1 = 1.0;
input VWAPStdev2 = 2.0;
input VWAPStdev3 = 3.0;

plot r1 = VWAP + VWAPStdev1 * deviation;
plot s1 = VWAP - VWAPStdev1 * deviation;
plot r2 = VWAP + VWAPStdev2 * deviation;
plot s2 = VWAP - VWAPStdev2 * deviation;
plot r3 = VWAP + VWAPStdev3 * deviation;
plot s3 = VWAP - VWAPStdev3 * deviation;

DefineGlobalColor("sDev1", (CreateColor(40, 40, 40)));
DefineGlobalColor("sDev2", (CreateColor(128, 128, 128)));
DefineGlobalColor("sDev3", (CreateColor(100, 100, 100)));

r1.SetDefaultColor(GlobalColor("sDev1"));
s1.SetDefaultColor(GlobalColor("sDev1"));
r2.SetDefaultColor(GlobalColor("sDev2"));
s2.SetDefaultColor(GlobalColor("sDev2"));
r3.SetDefaultColor(GlobalColor("sDev2"));
s3.SetDefaultColor(GlobalColor("sDev2"));

r1.SetStyle(Curve.SHORT_DASH);
r2.SetStyle(Curve.SHORT_DASH);
r3.SetStyle(Curve.SHORT_DASH);
s1.SetStyle(Curve.SHORT_DASH);
s2.SetStyle(Curve.SHORT_DASH);
s3.SetStyle(Curve.SHORT_DASH);

VWAP.HideBubble();
r1.HideBubble();
r2.HideBubble();
r3.HideBubble();
s1.HideBubble();
s2.HideBubble();
s3.HideBubble();

r1.SetHiding(HideSdLines);
r2.SetHiding(HideSdLines);
r3.SetHiding(HideSdLines);
s1.SetHiding(HideSdLines);
s2.SetHiding(HideSdLines);
s3.SetHiding(HideSdLines);

# CLOUD ##########################
def CloudR1 = if ShowCloud then r1 else Double.NaN;
def CloudR2 = if ShowCloud then r2 else Double.NaN;
def CloudR3 = if ShowCloud then r3 else Double.NaN;
def CloudS1 = if ShowCloud then s1 else Double.NaN;
def CloudS2 = if ShowCloud then s2 else Double.NaN;
def CloudS3 = if ShowCloud then s3 else Double.NaN;
AddCloud(CloudR1, CloudR2, GlobalColor("sDev1"), GlobalColor("sDev1"));
AddCloud(CloudS1, CloudS2, GlobalColor("sDev1"), GlobalColor("sDev1"));
AddCloud(CloudR2, CloudR3, GlobalColor("sDev2"), GlobalColor("sDev2"));
AddCloud(CloudS2, CloudS3, GlobalColor("sDev2"), GlobalColor("sDev2"));
# End VWAP Standard Deviation Bands
Hello tomsk,
I just found this code for vwap standard deviation bands and I really like it. But, the cloud colors in between the 1st and 2nd standard deviation (the dark gray) seems to cover the price action. I have been trying to figure out how to either bring the price to the front (like you can in TradingView) or simply make this area transparent. I am really only interested in the clouds from the 2nd deviation to the 3rd. Is there a simple way to change the code to do this or is it something more complex? Thanks for posting this, either way I will be using it.
 

TradeUp

Member
2019 Donor
Hi, I'm not sure if this exists but I looked all over and can't find it. I'm sure it's pretty easy but I'm not a coder and can't figure it out. I just want to color the candles green when price is trading above VWAP and red below VWAP. I think I need to add AssignPriceColor function to Vwap code but can't to figure it out. If anyone can help with this I would really appreciate it. Thank you!
 

mashume

Well-known member
VIP
Lifetime
Code:
def data = VWAP();

AssignPriceColor(if close > data then color.green else if close < data then color.red else color.gray);
that should get you started. I assign VWAP() to a variable so that I don't have to call it twice (for my two comparisons)... it's a little bit faster that way -- fewer system resources on your pc. Of course, you could also change the CLOSE to be HL2 if you want the average of the candle, HLC3, or even OHLC4 depending on how you want to define price. :cool:

-mashume
 

TradeUp

Member
2019 Donor
Code:
def data = VWAP();

AssignPriceColor(if close > data then color.green else if close < data then color.red else color.gray);
that should get you started. I assign VWAP() to a variable so that I don't have to call it twice (for my two comparisons)... it's a little bit faster that way -- fewer system resources on your pc. Of course, you could also change the CLOSE to be HL2 if you want the average of the candle, HLC3, or even OHLC4 depending on how you want to define price. :cool:

-mashume
@mashume Thank you so much for your help! Do I add this to the VWAP indicator or do I create a new indicator? It's not working for some reason? I'm not sure what I'm doing wrong?
 

mashume

Well-known member
VIP
Lifetime
@mashume Thank you so much for your help! Do I add this to the VWAP indicator or do I create a new indicator? It's not working for some reason? I'm not sure what I'm doing wrong?
It is it's own indicator. Create a new one, paste the code in, should run. I think I had it as an upper study, but it shouldn't matter.

-mashume
 

SpeedRacer

New member
unknown.png


input timeFrame = {default DAY, WEEK, MONTH};

def cap = getAggregationPeriod();
def errorInAggregation =
timeFrame == timeFrame.DAY and cap >= AggregationPeriod.WEEK or
timeFrame == timeFrame.WEEK and cap >= AggregationPeriod.MONTH;
assert(!errorInAggregation, "timeFrame should be not less than current chart aggregation period");

def yyyyMmDd = getYyyyMmDd();
def periodIndx;
switch (timeFrame) {
case DAY:
periodIndx = yyyyMmDd;
case WEEK:
periodIndx = Floor((daysFromDate(first(yyyyMmDd)) + getDayOfWeek(first(yyyyMmDd))) / 7);
case MONTH:
periodIndx = roundDown(yyyyMmDd / 100, 0);
}
def isPeriodRolled = compoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;
def volumeVwapSum;
def volumeVwap2Sum;

if (isPeriodRolled) {
volumeSum = volume;
volumeVwapSum = volume * vwap;
volumeVwap2Sum = volume * Sqr(vwap);
} else {
volumeSum = compoundValue(1, volumeSum[1] + volume, volume);
volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);
volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));
}
def price = volumeVwapSum / volumeSum;
def dev = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

input show_cloud = yes;
input length = 20;
input numDevDn = -1.28;
input numDevUp = 1.28;
input averageType = AverageType.EXPONENTIAL;

plot UpperBand = price + numDevUp * dev;
plot MidLine = price;
plot LowerBand = price + numDevDn * dev;

UpperBand.SetDefaultColor(GetColor(5));
LowerBand.SetDefaultColor(GetColor(6));

input show_cloud2 = yes;
input length2 = 20;
input numDevDn2 = -2.01;
input numDevUp2 = 2.01;
input averageType2 = AverageType.EXPONENTIAL;

def price2 = volumeVwapSum / volumeSum;
def dev2 = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

plot UpperBand2 = price2 + numDevUp2 * dev2;

plot LowerBand2 = price2 + numDevDn2 * dev2;

UpperBand2.SetDefaultColor(GetColor(5));
LowerBand2.SetDefaultColor(GetColor(6));
# Outer bands
input show_cloud3 = yes;
input length3 = 20;
input numDevDn3 = -2.51;
input numDevUp3 = 2.51;
input averageType3 = AverageType.EXPONENTIAL;

def price3 = volumeVwapSum / volumeSum;
def dev3 = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

plot UpperBand3 = price3 + numDevUp3 * dev3;
#plot MidLineob = avgob;
plot LowerBand3 = price3 + numDevDn3 * dev3;

UpperBand3.SetDefaultColor(GetColor(5));
LowerBand3.SetDefaultColor(GetColor(6));

input show_cloud4 = yes;
input length4 = 20;
input numDevDn4 = -3.09;
input numDevUp4 = 3.09;
input averageType4 = AverageType.EXPONENTIAL;

def price4 = volumeVwapSum / volumeSum;
def dev4 = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

plot UpperBand4 = price4 + numDevUp4 * dev4;
plot LowerBand4 = price4 + numDevDn4 * dev4;

UpperBand4.SetDefaultColor(GetColor(5));
LowerBand4.SetDefaultColor(GetColor(6));

input show_cloud5 = yes;
input length5 = 20;
input numDevDn5 = -4.01;
input numDevUp5 = 4.01;
input averageType5 = AverageType.EXPONENTIAL;

def price5 = volumeVwapSum / volumeSum;
def dev5 = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

plot UpperBand5 = price5 + numDevUp5 * dev5;
plot LowerBand5 = price5 + numDevDn5 * dev5;

UpperBand5.SetDefaultColor(GetColor(5));
LowerBand5.SetDefaultColor(GetColor(6));


AddCloud( if show_cloud then midline else double.nan,upperband2, Color.lIGHT_GRAY, Color.lIGHT_GRAY);
AddCloud(if show_cloud then midline else double.nan, lowerband, Color.GRAY, Color.GRAY);

AddCloud( if show_cloud2 then upperband else double.nan,upperband2, Color.LIGHT_RED, Color.LIGHT_RED);
AddCloud(if show_cloud3 then upperband2 else double.nan,upperband3, Color.LIGHT_RED, Color.LIGHT_RED);
AddCloud( if show_cloud4 then upperband3 else double.nan,upperband4, Color.LIGHT_RED, Color.LIGHT_RED);
AddCloud( if show_cloud5 then upperband4 else double.nan,upperband5, Color.LIGHT_RED, Color.LIGHT_RED);
AddCloud(if show_cloud2 then lowerband else double.nan,lowerband2, Color.LIGHT_GREEN, Color.LIGHT_GREEN);
AddCloud(if show_cloud3 then lowerband2 else double.nan,lowerband3, Color.LIGHT_GREEN, Color.LIGHT_GREEN);
AddCloud(if show_cloud4 then lowerband3 else double.nan,lowerband4, Color.LIGHT_GREEN, Color.LIGHT_GREEN);
AddCloud( if show_cloud5 then lowerband4 else double.nan,lowerband5, Color.LIGHT_GREEN, Color.LIGHT_GREEN);
 

Similar threads

Top