// @version=5 indicator("QC VWAP + Bollinger + Signal", overlay=Gold / U.S. DollarFOREXCOM:XAUUSDAashiqShakeel1122// @version=5 indicator("QC VWAP + Bollinger + Signal", overlay=true) // Inputs vwapEnable = input.bool(true, "Show Session VWAP") bbLength = input.int(20, "BB Length") bbMult = input.float(2.0, "BB Multiplier") rsiLength = input.int(14, "RSI Length") showSignals = input.bool(true, "Show Entry Signals") // VWAP (session) var float session_vwap = na if vwapEnable session_high = ta.session(high, "0000-2400") // Use built-in vwap session_vwap := ta.vwap(hlc3) // Bollinger basis = ta.sma(close, bbLength) dev = ta.stdev(close, bbLength) upper = basis + bbMult * dev lower = basis - bbMult * dev plot(vwapEnable ? session_vwap : na, title="Session VWAP", color=color.yellow, linewidth=2) plot(basis, title="BB Basis", linewidth=1) p1 = plot(upper, title="BB Upper") p2 = plot(lower, title="BB Lower") fill(p1, p2, color=color.new(color.blue, 90)) // RSI (for filter) rsi = ta.rsi(close, rsiLength) hline(70, "RSI 70", color=color.gray) hline(30, "RSI 30", color=color.gray) // Simple signal logic (illustrative, NOT trade automation) longCond = close > session_vwap and close = upper and rsi > 30 plotshape(showSignals and longCond, title="Long", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG") plotshape(showSignals and shortCond, title="Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT") // Alerts alertcondition(longCond, title="LongSignal", message="QC Long Signal") alertcondition(shortCond, title="ShortSignal", message="QC Short Signal")