//@version=5 indicator("Gamma Squeeze [Proxy]", shorttitle="Gamm

//@version=5 indicator("Gamma Squeeze [Proxy]", shorttitle="Gamm

//@version=5
indicator("Gamma Squeeze ", shorttitle="Gamma Squeeze", overlay=true)

// ———— Inputs ————
bb_length = input.int(20, "Bollinger Bands Length")
bb_mult = input.float(2.0, "Bollinger Bands StdDev")
kc_length = input.int(20, "Keltner Channel Length")
kc_mult = input.float(1.5, "Keltner Channel ATR Multiplier")
rsi_length = input.int(14, "RSI Length")
squeeze_threshold = input.int(0, "Squeeze Threshold (RSI)")

// ———— Calculate Bollinger Bands ————
bb_basis = ta.sma(close, bb_length)
bb_std = ta.stdev(close, bb_length)
bb_upper = bb_basis + bb_mult * bb_std
bb_lower = bb_basis - bb_mult * bb_std

// ———— Calculate Keltner Channels ————
kc_atr = ta.atr(kc_length)
kc_middle = ta.ema(close, kc_length)
kc_upper = kc_middle + kc_mult * kc_atr
kc_lower = kc_middle - kc_mult * kc_atr

// ———— Detect Squeeze Condition ————
squeeze_on = (bb_upper < kc_upper) and (bb_lower > kc_lower) // Bollinger inside Keltner = squeeze
squeeze_off = (bb_upper > kc_upper) or (bb_lower < kc_lower) // Squeeze released

// ———— Momentum Check (RSI) ————
rsi = ta.rsi(close, rsi_length)
momentum_up = rsi > 50 + squeeze_threshold
momentum_down = rsi < 50 - squeeze_threshold

// ———— Plot Squeeze Signals ————
plotshape(squeeze_on, style=shape.triangleup, location=location.belowbar, color=color.new(color.blue, 0), size=size.small, title="Squeeze On")
plotshape(squeeze_off, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Squeeze Off")

// ———— Color Bars During Squeeze ————
barcolor(squeeze_on ? color.blue : squeeze_off ? color.red : na)

// ———— Plot Channels ————
plot(bb_upper, "BB Upper", color=color.purple)
plot(bb_lower, "BB Lower", color=color.purple)
plot(kc_upper, "KC Upper", color=color.orange)
plot(kc_lower, "KC Lower", color=color.orange)

// ———— Alerts ————
alertcondition(squeeze_off and momentum_up, "Squeeze Release (Bullish)", "Bullish Breakout Possible")
alertcondition(squeeze_off and momentum_down, "Squeeze Release (Bearish)", "Bearish Breakdown Possible")

// ———— Labels for Signals ————
if squeeze_off and momentum_up
label.new(bar_index, low, "Bullish Squeeze", color=color.green, textcolor=color.white, style=label.style_label_up)
if squeeze_off and momentum_down
label.new(bar_index, high, "Bearish Squeeze", color=color.red, textcolor=color.white, style=label.style_label_down)

Read More

Share:

Latest News