To address another matter, for the higherFrames labels only, Would you be willing to add 2nd script, multiple times, depends on how many higher frames you want to see? if so here is the code, Just add and set each instance of the code to a different frame, only chart frame and higher will display labels.

Ruby:

#RSI_BAND_HF

#Convered by

@SuryaKiranC
#Reqested by

@kd312
#

https://usethinkscript.com/threads/rsi-bands-for-thinkorswim.9346/
#Enhancements requested by

@Ahmar824
#

https://usethinkscript.com/threads/rsi-bands-for-thinkorswim.9346/post-86644
input length = 14;

input high_B = 60;

def mid_B = 50;

input low_B = 40;

input aP = AggregationPeriod.FIFTEEN_MIN;

Script RSI_BAND {

input length = 14;

input high_B = 60;

def mid_B = 50;

input low_B = 40;

input aP = AggregationPeriod.FIFTEEN_MIN;

def ep = 2 * length - 1;

def auc = ExpAverage(max(close(period = aP) - close(period = aP)[1],0),ep);

def adc = ExpAverage(max(close(period = aP)[1] - close(period = aP),0),ep);

def x1 = (length - 1) * (adc * low_B / (100 - low_B) - auc);

plot lowrsi = if(x1 >= 0, close(period = aP) + x1, close(period = aP) + x1 * (100-low_B)/low_B);

def x7 = (length - 1) * (adc * high_B / (100 - high_B) - auc);

plot highrsi = if(x7 >= 0, close(period = aP) + x7, close(period = aP) + x7 * (100-high_B)/high_B);

def x13 = (length - 1) * (adc * mid_B / (100-mid_B) - auc);

plot midrsi = if(x13 >= 0, close(period = aP) + x13, close(period = aP) + x13 * (100 - mid_B)/mid_B);

};

def highrsi = RSI_BAND(length = length,high_B = high_B,low_B = low_B,aP = aP).highrsi;

def midrsi = RSI_BAND(length = length,high_B = high_B,low_B = low_B,aP = aP).midrsi;

def lowrsi = RSI_BAND(length = length,high_B = high_B,low_B = low_B,aP = aP).lowrsi;

AddLabel(!isNan(midrsi),if aP == aggregationPeriod.MONTH then "M"

else if aP == aggregationPeriod.WEEK then "W"

else if aP == aggregationPeriod.FOUR_DAYS then "4D"

else if aP == aggregationPeriod.THREE_DAYS then "3D"

else if aP == aggregationPeriod.TWO_DAYS then "2D"

else if aP == aggregationPeriod.DAY then "D"

else if aP == aggregationPeriod.FOUR_HOURS then "4H"

else if aP == aggregationPeriod.TWO_HOURS then "2H"

else if aP == aggregationPeriod.HOUR then "60m"

else if aP == aggregationPeriod.THIRTY_MIN then "30m"

else if aP == aggregationPeriod.TWENTY_MIN then "20m"

else if aP == aggregationPeriod.FIFTEEN_MIN then "15m"

else if aP == aggregationPeriod.TEN_MIN then "10m"

else if aP == aggregationPeriod.FIVE_MIN then "5m"

else if aP == aggregationPeriod.FOUR_MIN then "4m"

else if aP == aggregationPeriod.THREE_MIN then "3m"

else if aP == aggregationPeriod.TWO_MIN then "2m"

else if aP == aggregationPeriod.MIN then "1m"

else "",Color.GRAY);

AddLabel(yes,highrsi + " ",(CreateColor(82, 128, 233)));

AddLabel(yes,midrsi + " ",(CreateColor(254, 3, 1)));

AddLabel(yes,lowrsi + " ",(CreateColor(0, 255, 0)));

#End

Now, when you get a chance, can you test this RSI_BAND 60-40 on 15m and/or 30m frames? My interest in those frames are the 30m being th last frame that can divide the trading hours candles equally for equity, and 15 for some ETF that trades extra 15m.

Thank you again!