//@version=5
indicator("Stochastic RSI", overlay=false)
// Inputs
rsi_length = [Link](14, "RSI Length")
stoch_length = [Link](14, "Stochastic Length")
k_smooth = [Link](3, "%K Smoothing")
d_smooth = [Link](3, "%D Smoothing")
// Calculate Stochastic RSI
rsi = [Link](close, rsi_length)
stoch_rsi = [Link](rsi, rsi, rsi, stoch_length)
k = [Link](stoch_rsi, k_smooth)
d = [Link](k, d_smooth)
// Plot lines
plot(k, color=[Link], title="%K", linewidth=2)
plot(d, color=[Link], title="%D", linewidth=2)
// Plot levels
hline(80, "Overbought", color=[Link], linestyle=hline.style_dashed)
hline(20, "Oversold", color=[Link], linestyle=hline.style_dashed)
hline(50, "Midline", color=[Link])
// Signals
oversold_cross = [Link](k, 20) and d < 20
overbought_cross = [Link](k, 80) and d > 80
// Plot signals
plotshape(oversold_cross, style=[Link], location=[Link],
color=[Link], textcolor=[Link], text="BUY")
plotshape(overbought_cross, style=[Link], location=[Link],
color=[Link], textcolor=[Link], text="SELL")
// Background
bgcolor(k > 80 and d > 80 ? [Link]([Link], 90) : k < 20 and d < 20 ?
[Link]([Link], 90) : na)
// Alerts
alertcondition(oversold_cross, "StochRSI Oversold", "StochRSI crossed above
oversold level")
alertcondition(overbought_cross, "StochRSI Overbought", "StochRSI crossed below
overbought level")