Search code examples
pine-scriptlookback

How to create RSI LOOKback for OVERbought/OVERsold condition? pinescript


I'm trying to code a lookback input to check if my RSI oversold condition happened anywhere within the last 4 candlesticks to trigger a buy signal.(And to have it adjustable would be ideal to retest strategies). I just don't know how to plug it into my "long" strategy ?. I keep getting "and" error? Can't seem to figure this one out and any help would be so awesome!

This worked actually... lookback = input(4, "lookback") long = (rsiOversold[lookback]) and open > close[1] and high1 - low1 >= 24 * syminfo.mintick

Big Thanks LoL,

Paul

//@version=4
strategy(title="Relative Strength Index", shorttitle="RSI", format=format.price, precision=2, overlay = false, process_orders_on_close = true)

//Get Values
len = input(10, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
overbought = input(title="OB",defval=70)
oversold = input(title="OS",defval=30)
lookback = input(4, "Lookback")


//RSI Value
rsiValue = rsi(src, len)
rsiOverbought = barssince(rsiValue > overbought) ==1
rsiOversold = barssince(rsiValue < oversold) ==1

long = rsiOversold, lookback and open > close[1] and high*1 - low*1  >= 24 * syminfo.mintick
exitLong = close < low[1]

short = rsiOverbought and open < close[1] and high*1 - low*1  >= 24 * syminfo.mintick
exitShort = high > high[1]

bgcolor(barssince(rsiValue > overbought) == 1 ? color.red : na)
bgcolor(barssince(rsiValue < oversold) == 1 ? color.green : na)

//Alerts
alertcondition(rsiOverbought, title = "Overbought", message = "{{close}}")
alertcondition(rsiOversold, title = "Oversold", message = "{{close}}")
    
// Plotted Values    
plot(rsi, "RSI", color=#7E57C2)
band1 = hline(70, "Upper Band", color=#787B86)
bandm = hline(50, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(30, "Lower Band", color=#787B86)
fill(band1, band0, color=color.rgb(126, 87, 194, 90), title="Background")

//Entry and Exit
strategy.entry("long", strategy.long, 1, when = long)

strategy.close("long", when = exitLong)

strategy.entry("short", strategy.short, 1, when = short)

strategy.close("short", when = exitShort) 

Solution

  • lookback = input(4, "Lookback")
    rsiOverboughtWithLookback = barssince(rsiValue > overbought) < lookback
    bgcolor(rsiOverboughtWithLookback ? color.lime : na)
    

    The condition will remain true/ color the background lime, if your RSI oversold condition happened anywhere within the last 4 candlesticks.

    enter image description here