Below is a Pine Script (v6) that leverages the Average True Range (ATR) to generate dynamic signals. The script includes customizable parameters, optional enhancements, and plots background colors when alert conditions are met.
//@version=6
indicator("ATR Signal with Background Alerts", overlay=true)
// === Inputs ===
atrLength = input.int(14, "ATR Length", minval=1)
atrMultiplier = input.float(1.5, "ATR Multiplier", minval=0.1)
signalType = input.string("Breakout", title="Signal Type", options=["Breakout", "Reversal"])
showATR = input.bool(false, "Show ATR Plot?")
// === ATR Calculation ===
atr = ta.atr(atrLength)
// === Signal Logic ===
breakoutUp = close > close[1] + atr * atrMultiplier
breakoutDown = close < close[1] - atr * atrMultiplier
reversalUp = close > high[1] + atr * atrMultiplier
reversalDown = close < low[1] - atr * atrMultiplier
longSignal = signalType == "Breakout" ? breakoutUp : reversalUp
shortSignal = signalType == "Breakout" ? breakoutDown : reversalDown
// === Plotting ===
plot(showATR ? atr : na, title="ATR", color=color.orange, linewidth=2)
plotshape(longSignal, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(shortSignal, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// === Background Coloring on Alerts ===
bgcolor(longSignal ? color.new(color.green, 85) : na, title="Long Signal BG")
bgcolor(shortSignal ? color.new(color.red, 85) : na, title="Short Signal BG")
// === Alerts ===
alertcondition(longSignal, title="ATR Long Signal", message="ATR-based LONG signal triggered!")
alertcondition(shortSignal, title="ATR Short Signal", message="ATR-based SHORT signal triggered!")