Squeeze Breakout for US500 (S&P 500)
Trade the breakout of a Bollinger Band squeeze — entries only when volatility expands.
Indicators
Bollinger Bands, Keltner Channel
Recommended Timeframes
1h, 4h
Symbol Volatility
medium
Trading Sessions
New York (Mon–Fri, with extended hours)
Why Squeeze Breakout Works on US500
A "squeeze" happens when Bollinger Bands contract inside the Keltner Channel — volatility is unusually low. The strategy waits for the squeeze to release, then trades in the direction of the expansion. Filters out chop, captures the start of new trends. Works best on volatile symbols where squeezes are rare and consequential.
The S&P 500 (US500) is the global benchmark equity index. Strong long-term uptrend with regime shifts; momentum and trend bots dominate, mean-reversion works in QE periods only.
Equity indices reflect aggregate corporate earnings, sentiment, and Fed policy. They trend more cleanly than individual stocks and gap less than commodities.
Best For
- • Volatility expansion regimes
- • Pre-news setups
Avoid In
- • Constant-volatility crypto
- • Illiquid sessions
Pine Script Source
Copy this into PineForge — backtest on US500 or any supported symbol, then deploy as a live bot.
//@version=5
strategy("Squeeze Breakout", overlay=true)
length = input.int(20, "Length")
bb_mult = input.float(2.0, "BB Multiplier")
kc_mult = input.float(1.5, "KC Multiplier")
basis = ta.sma(close, length)
dev = ta.stdev(close, length)
bb_upper = basis + dev * bb_mult
bb_lower = basis - dev * bb_mult
atr = ta.atr(length)
kc_upper = basis + atr * kc_mult
kc_lower = basis - atr * kc_mult
squeeze = bb_upper < kc_upper and bb_lower > kc_lower
release = not squeeze and squeeze[1]
if release and close > basis
strategy.entry("Long", strategy.long)
if release and close < basis
strategy.entry("Short", strategy.short)Backtest Squeeze Breakout on US500 in 30 seconds
Sign up for PineForge, paste this Pine Script, and run a 1-year backtest on real US500 data — no credit card required.