RSI Labels, Watchlists, Scans

Azzy19

New member
Hi, I'm struggling to find and create an alert for RSI crossing 30 (Oversold), and 70(Overbought). Is their a way to set an alert for a security when it's RSI behaves like this?

Thanks!
 
Last edited:

BenTen

Administrative
Staff member
Staff
VIP
Give this a try:

Code:
def rsi = RSIWilder("over bought" = 95, "over sold" = 5, price = close(period = AggregationPeriod.FOUR_DAYS));
AddLabel(yes, rsi, if rsi >= 95 or rsi <= 5 then Color.RED else Color.WHITE);

Source
 

Miket

Member
Just a small black box. not sure how to fix it

Code:
# beginning of code ———————- –
# current ADX as a label at top of the chart
#
# Label color changes according to value of ADX:
# . Green if >25
# . Gray if 20 to 25
# . Red if < 20
# . Red if < 20 # input length = 14; plot currentADX = ADX(length); currentADX.hide();
input length = 14;
plot currentADX = ADX(length);
currentADX.hide();
DefineGlobalColor(“ADXHigh”, CreateColor(50, 205, 50));

DefineGlobalColor(“ADXLow”, Color.RED);
DefineGlobalColor(“ADXMid”, Color.GRAY);
AddLabel (yes, (Concat(“ADX = “, Round(currentADX,1))),if currentADX > 25 then GlobalColor(“ADXHigh”) else if currentADX < 20 then GlobalColor("ADXLow") else GlobalColor("ADXMid")); # end of code ——————————-
 

horserider

Well-known member
VIP
Code:
# SimpleMovingAvg RSI label by Horsrider 10/10/2019

input length = 14;
input over_Bought = 70;
input over_Sold = 30;
input price = close;
input averageType = AverageType.WILDERS;

def NetChgAvg = MovingAverage(averageType, price - price[1], length);
def TotChgAvg = MovingAverage(averageType, AbsValue(price - price[1]), length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;

plot RSI = 50 * (ChgRatio + 1);

AddLabel(yes, rsi, if rsi >= over_Bought  or rsi <= over_Sold then Color.RED else Color.GREEN);
 

Branch

Member
VIP
I would like to have a label (AddLabel) that tells me that the RSI trending higher or lower based on the close. Something like an if statement.
If the OHLC4 RSI percentage is higher than the previous RSI percentage on the the OHLC4 close then"Higher" the label will show Higher and the color I want to be green. Note: I can handle the color part, I just need help with this if statement.

How can I get that thought in ThinkScript?
 

tomsk

Well-known member
VIP
@Branch Here is a simple label that compares two RSI values and displays whether the RSI is RISING or FALLING over n periods
I have color coded the label green, pink, and yellow

Code:
input n = 21;
def RSI_ = RSI(14, 70, 30, close, AverageType.WILDERS);
def RSIUP = RSI_ > RSI_[n];
def RSIDN = RSI_ < RSI_[n];
addlabel(1, "RSI : " + Round(RSI_,2) + (if RSIUP then " RISING [" + n + " BARS]"
                                        else if RSIDN then " FALLING [" + n + " BARS]"
                                        else " NEUTRAL"),
if RSIUP then Color.GREEN else if RSIDN then Color.PINK else Color.YELLOW);
 

zeek

Active member
2019 Donor
@horserider Is it possible to make the label only paint the label green if the RSI value goes below 30 and only paint red if the value goes above 70? If not, can the label be colored grey if the value is currently between 30 and 70?

Thanks for a great script!
 

mc01439

Well-known member
2019 Donor
VIP
@horserider Is it possible to make the label only paint the label green if the RSI value goes below 30 and only paint red if the value goes above 70? If not, can the label be colored grey if the value is currently between 30 and 70?

Thanks for a great script!

@zeek - Here you go - as requested.

https://tos.mx/sdJ8vdI
Code:
input n = 21;
def RSI = RSI(14, 70, 30, close, AverageType.WILDERS);

def rsiUP = RSI < 30;
def rsiDN = RSI > 70;
def rsinet = !rsiUP and !rsiUP;

AddLabel(rsiUP, "  RSI < 30  ", Color.GREEN);
AddLabel(rsiDN, "  RSI > 70  ", Color.RED);
AddLabel(rsinet, " RSI between 30 & 70", Color.GRAY);
 

tomsk

Well-known member
VIP
@zeek per your request I have modified @horserider RSI label code to display the label GREEN is RSI goes below 30 and paint it RED if RSI goes above 70. Otherwise RSI is not displayed

Code:
# SimpleMovingAvg RSI label by Horsrider 10/10/2019

input length = 14;
input over_Bought = 70;
input over_Sold = 30;
input price = close;
input averageType = AverageType.WILDERS;

def NetChgAvg = MovingAverage(averageType, price - price[1], length);
def TotChgAvg = MovingAverage(averageType, AbsValue(price - price[1]), length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;

plot RSI = 50 * (ChgRatio + 1);

AddLabel(RSI < over_Sold or RSI > over_Bought, RSI, if RSI < over_Sold then Color.GREEN else Color.RED);
 

J007RMC

Well-known member
2019 Donor
here is one label

Code:
#RSI label for upper study


input length = 14;
input over_Bought = 70;
input over_Sold = 30;
input price = close;
input avg_type = AverageType.WILDERS;

def NetChgAvg = MovingAverage(avg_type, price - price[1], length);
def TotChgAvg = MovingAverage(avg_type, AbsValue(price - price[1]), length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;

def RSI = round(50 * (ChgRatio + 1),2);


AddLabel(1, (if avg_type == 0 then "RSI SMA" else if avg_type == 1 then "RSI EMA" else if avg_type == 2 then "RSI WMA" else if avg_type == 3 then "RSI Wldr" else "RSI Hull") + ": "+rsi+""+ if rsi==rsi[1] then " NC" else if  rsi>rsi[1] then " UP" else " DN", if between(rsi,30,70) then color.yellow else if rsi > 50 then if rsi<rsi[1] then color.dark_green else Color.GREEN else if rsi < 50 then if rsi>rsi[1] then color.dark_red else Color.RED else Color.DARK_GRAY);


#addlabel(yes,"RSI " +rsiavg, if rsiavg>70 then color.green else if rsiavg<30 then color.red else color.yellow);

######
 
Last edited by a moderator:

tradebyday

Active member
Does anyone have an RSI Label I can add to the chart ?

Thanks
Whipped one up real quick.. thank god for copy paste because I did not know the calculations for RSI off top haha
Code:
#RSILabel

input RSILength = 14;
input price = close;
input averageType = AverageType.WILDERS;
def NetChgAvg = MovingAverage(averageType, price - price[1], RSILength);
def TotChgAvg = MovingAverage(averageType, AbsValue(price - price[1]), RSILength);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;

def RSI = 50 * (ChgRatio + 1);

AddLabel(yes, Concat("RSI=", RSI), Color.YELLOW);

Right as I post @J007RMC beat me to it haha
 

Nikola

Member
is there a way to modify it to show the 1hr RSI....on all my charts? I did something similar for ATR chart label.

i did this but the value is not coming up correctly

input BasePeriod = AggregationPeriod.HOUR;
input showlabel = yes;

def rsi = reference RSI("over bought" = 70, "over sold" = 30, price = close(period = AggregationPeriod.FOUR_DAYS));

AddLabel(yes, (Concat("RSI: ", Round(rsi, 2))), if rsi >= 70 then Color.RED else if rsi <= 30 then Color.GREEN else Color.WHITE);
 

Nikola

Member
it shows up only on the 1hr chart, is there a way to make it show on all charts

for reference this is what my ATR chart label is and it shows up on ALL charts

Code:
# ItsMeKola 08/2020
# Label color changes according to value of ATR:
# . Green if > 2
# . Lime if .50 to 1.99
# . Red if < .49
#

declare upper;

input ATRLength = 14;
input averagetype = AverageType.simple;
input BasePeriod = AggregationPeriod.DAY;
input showlabel = yes;

def ATR = MovingAverage (averagetype, TrueRange(high(period = BasePeriod)[1], close(period = BasePeriod)[1], low(period = BasePeriod)[1]), ATRLength);


DefineGlobalColor("ATRHigh", color.green);
DefineGlobalColor("ATRLow", Color.red);
DefineGlobalColor("ATRMid", Color.lime);

AddLabel (yes, (Concat("ATR: ", Round(ATR, 2))), if ATR > 2 then GlobalColor("ATRHigh") else if ATR < .49 then GlobalColor("ATRLow") else GlobalColor("ATRMid"));
 

Similar threads

Top