Overview
Bollinger Bands are volatility-based technical indicators that consist of three lines:
- Middle Band: Simple Moving Average (SMA)
- Upper Band: SMA + (Standard Deviation × Multiplier)
- Lower Band: SMA - (Standard Deviation × Multiplier)
This guide covers three signal strategies: Touch, Breakout, and Squeeze.
Signal Types Explained
1. BB Touch Signals (Mean Reversion)
Philosophy: Price tends to revert to the mean after touching extreme bands.
- BB_BUY: Price touches or gets very close to the lower band
- Interpretation: Oversold condition, potential bounce upward
- Entry: When price is within
bb_touch_thresholdof lower band
- BB_SELL: Price touches or gets very close to the upper band
- Interpretation: Overbought condition, potential pullback
- Entry: When price is within
bb_touch_thresholdof upper band
Best For: Range-bound markets, low volatility periods
2. BB Breakout Signals (Momentum Continuation)
Philosophy: Strong moves that break through bands indicate momentum continuation.
- BUY: Price breaks above upper band by threshold
- Interpretation: Strong bullish momentum, trend continuation
- Entry: When price exceeds upper band by
bb_breakout_threshold
- SELL: Price breaks below lower band by threshold
- Interpretation: Strong bearish momentum, trend continuation
- Entry: When price falls below lower band by
bb_breakout_threshold
Best For: Trending markets, high momentum moves
3. BB Squeeze Signals (Volatility Contraction)
Philosophy: Low volatility periods (narrow bands) precede explosive moves.
- PUMP: Bands contract then price breaks upward
- Interpretation: Volatility compression followed by bullish breakout
- Entry: When band width <
bb_squeeze_width_thresholdthen upward breakout
- CRASH: Bands contract then price breaks downward
- Interpretation: Volatility compression followed by bearish breakdown
- Entry: When band width <
bb_squeeze_width_thresholdthen downward breakdown
Best For: Anticipating major moves, volatility trading
Configuration Parameters
Core Settings
# Signal Enablement
enable_bb_touch_signal: true # Mean reversion strategy
enable_bb_breakout_signal: true # Momentum continuation strategy
enable_bb_squeeze_signal: false # Volatility breakout strategy
# Bollinger Band Parameters
bb_period: 20 # Lookback period for SMA
bb_deviation: 2.0 # Standard deviation multiplier
# Threshold Settings
bb_touch_threshold: 0.001 # 0.1% distance for touch signal
bb_breakout_threshold: 1.01 # 1% beyond band for breakout
bb_squeeze_width_threshold: 0.02 # 2% band width for squeeze
# Broadcast Signals
supported_volatility_action: ["BUY", "SELL", "PUMP", "CRASH"]
supported_volatility_action_broadcast:
["BUY", "SELL", "PUMP", "CRASH", "BB_SELL", "BB_BUY"]
Parameter Definitions
| Parameter | Description | Standard Value | Range |
|---|---|---|---|
bb_period |
Number of candles for moving average | 20 | 10-50 |
bb_deviation |
Standard deviation multiplier | 2.0 | 1.5-3.0 |
bb_touch_threshold |
Distance to band for touch signal | 0.001 (0.1%) | 0.0005-0.01 |
bb_breakout_threshold |
Beyond band for breakout | 1.01 (1%) | 1.005-1.05 |
bb_squeeze_width_threshold |
Band width % for squeeze | 0.02 (2%) | 0.01-0.05 |
Optimized Settings by Trading Style
Scalp Trading (Quick In/Out, High Frequency)
Timeframes: 1m, 3m, 5m
Strategy Focus: Touch signals + tight thresholds
# Scalping Configuration
bb_period: 15 # Faster response
bb_deviation: 1.8 # Tighter bands (more signals)
bb_touch_threshold: 0.0005 # 0.05% - very tight
bb_breakout_threshold: 1.005 # 0.5% - catch quick moves
bb_squeeze_width_threshold: 0.015 # 1.5% - frequent squeezes
enable_bb_touch_signal: true # Primary strategy
enable_bb_breakout_signal: true # Secondary for momentum scalps
enable_bb_squeeze_signal: false # Too slow for scalping
# Recommended Broadcast
supported_volatility_action: ["BB_BUY", "BB_SELL"]
Rationale:
- Shorter periods catch rapid price movements
- Tighter bands generate more signals
- Focus on mean reversion in ranging markets
- Ignore squeezes (too slow for scalp timeframes)
Day Trading (Intraday, Multiple Positions)
Timeframes: 5m, 15m, 30m
Strategy Focus: Balanced touch + breakout signals
# Day Trading Configuration
bb_period: 20 # Standard period
bb_deviation: 2.0 # Standard bands
bb_touch_threshold: 0.001 # 0.1% - moderate
bb_breakout_threshold: 1.01 # 1% - standard
bb_squeeze_width_threshold: 0.02 # 2% - standard
enable_bb_touch_signal: true # Range-bound trades
enable_bb_breakout_signal: true # Trend-following trades
enable_bb_squeeze_signal: true # Capture volatility expansions
# Recommended Broadcast
supported_volatility_action: ["BUY", "SELL", "BB_BUY", "BB_SELL", "PUMP"]
Rationale:
- Standard settings work well for intraday volatility
- Enable all signal types for diverse opportunities
- Balance between noise filtering and signal generation
- Squeezes valuable for catching intraday breakouts
Swing Trading (Multi-Day Holds)
Timeframes: 1h, 2h, 6h
Strategy Focus: Breakout signals + wider bands
# Swing Trading Configuration
bb_period: 20 # Standard period
bb_deviation: 2.2 # Slightly wider bands
bb_touch_threshold: 0.002 # 0.2% - looser
bb_breakout_threshold: 1.015 # 1.5% - stronger confirmation
bb_squeeze_width_threshold: 0.025 # 2.5% - meaningful squeezes
enable_bb_touch_signal: true # Lower priority
enable_bb_breakout_signal: true # Primary strategy
enable_bb_squeeze_signal: true # High priority
# Recommended Broadcast
supported_volatility_action: ["BUY", "SELL", "PUMP", "CRASH"]
Rationale:
- Wider bands reduce noise on higher timeframes
- Breakouts more reliable for multi-day trends
- Squeezes excellent for catching multi-day moves
- Touch signals less relevant (fewer false signals needed)
Long-Term Trading (Position/Investment)
Timeframes: 6h, 1d
Strategy Focus: Squeeze signals + major breakouts
# Long-Term Trading Configuration
bb_period: 25 # Longer period (1 month on daily)
bb_deviation: 2.5 # Wide bands (major moves only)
bb_touch_threshold: 0.005 # 0.5% - very loose
bb_breakout_threshold: 1.02 # 2% - strong confirmation
bb_squeeze_width_threshold: 0.03 # 3% - significant compression
enable_bb_touch_signal: false # Ignore touches
enable_bb_breakout_signal: true # Major trends only
enable_bb_squeeze_signal: true # Primary strategy
# Recommended Broadcast
supported_volatility_action: ["PUMP", "CRASH", "BUY", "SELL"]
Rationale:
- Longer periods smooth out short-term volatility
- Wide bands filter out noise, capture major moves
- Squeezes predict major trend changes
- Touch signals unreliable on long timeframes
Timeframe-Specific Configurations
Ultra-Fast Scalping (1m, 3m)
bb_period: 12
bb_deviation: 1.5
bb_touch_threshold: 0.0003
bb_breakout_threshold: 1.003
enable_bb_touch_signal: true
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: false
Use Case: High-frequency trading, capturing micro-moves
Standard Scalping (5m)
bb_period: 15
bb_deviation: 1.8
bb_touch_threshold: 0.0005
bb_breakout_threshold: 1.005
enable_bb_touch_signal: true
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: false
Use Case: Active scalping with more breathing room
Active Day Trading (15m, 30m)
bb_period: 20
bb_deviation: 2.0
bb_touch_threshold: 0.001
bb_breakout_threshold: 1.01
enable_bb_touch_signal: true
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: true
Use Case: Standard intraday trading, 3-10 trades/day
Swing Trading (1h, 2h)
bb_period: 20
bb_deviation: 2.2
bb_touch_threshold: 0.002
bb_breakout_threshold: 1.015
enable_bb_touch_signal: true
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: true
Use Case: Multi-day positions, trending markets
Extended Swing (6h)
bb_period: 24
bb_deviation: 2.3
bb_touch_threshold: 0.003
bb_breakout_threshold: 1.018
enable_bb_touch_signal: false
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: true
Use Case: Week-long positions, major moves
Position Trading (1d)
bb_period: 25
bb_deviation: 2.5
bb_touch_threshold: 0.005
bb_breakout_threshold: 1.02
enable_bb_touch_signal: false
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: true
Use Case: Month-long positions, major trend changes
Volatility Action Signals
Signal Priority Matrix
| Trading Style | Primary Signals | Secondary Signals | Broadcast All |
|---|---|---|---|
| Scalp | BB_BUY, BB_SELL | BUY, SELL | No |
| Day Trade | BUY, SELL, BB_BUY, BB_SELL | PUMP, CRASH | Yes |
| Swing | BUY, SELL, PUMP | BB_BUY, BB_SELL, CRASH | Yes |
| Long-Term | PUMP, CRASH | BUY, SELL | No |
Broadcast Configuration
Aggressive (All Signals)
supported_volatility_action_broadcast:
["BUY", "SELL", "PUMP", "CRASH", "BB_SELL", "BB_BUY"]
Conservative (Major Signals Only)
supported_volatility_action_broadcast:
["BUY", "SELL", "PUMP", "CRASH"]
Touch Signals Only
supported_volatility_action_broadcast:
["BB_SELL", "BB_BUY"]
Best Practices
1. Market Condition Adaptation
Ranging Market (Low volatility)
- Enable:
enable_bb_touch_signal: true - Disable:
enable_bb_breakout_signal: false - Settings: Standard deviation 2.0, tight thresholds
Trending Market (High momentum)
- Enable:
enable_bb_breakout_signal: true - Disable:
enable_bb_touch_signal: false - Settings: Standard deviation 2.2-2.5, wider thresholds
Pre-Breakout (Consolidation)
- Enable:
enable_bb_squeeze_signal: true - Settings: Lower squeeze threshold (0.015-0.02)
2. Risk Management
| Strategy | Stop Loss | Take Profit | Risk:Reward |
|---|---|---|---|
| Touch Signal | Middle band | Opposite band | 1:2 |
| Breakout Signal | Entry band | 2× band width | 1:3 |
| Squeeze Signal | Below/above squeeze | 3× band width | 1:4 |
Example (Touch Signal):
- Entry: Lower band touch (BB_BUY)
- Stop: Below lower band (1% below)
- Target: Middle band or upper band
- Risk: 1%, Reward: 2-4%
3. Combining Multiple Timeframes
Top-Down Analysis:
- Daily (1d): Identify overall trend and major squeeze zones
- 4-Hour (6h): Confirm trend direction and intermediate breakouts
- 1-Hour (1h): Find entry signals (touch/breakout)
- 15-Minute (15m): Precise entry timing
Rule: Only take signals aligned with higher timeframe trend.
4. False Signal Reduction
Filters to Add:
- Volume confirmation: Breakouts need high volume
- RSI confirmation: BB_BUY + RSI < 30, BB_SELL + RSI > 70
- Trend filter: Only trade in direction of 50-period MA
- Time filter: Avoid low liquidity hours
Example Logic:
BB_BUY Signal = True IF:
- Price within 0.1% of lower band AND
- RSI < 35 AND
- Volume > 20-period average
5. Optimization Guidelines
Backtesting Steps:
- Start with standard settings (Period: 20, Dev: 2.0)
- Test on 3-6 months of historical data
- Adjust one parameter at a time
- Optimize for your specific instrument (crypto, forex, stocks)
- Forward test for 1 month before live trading
Key Metrics:
- Win rate > 50% for mean reversion
- Win rate > 40% for breakouts (larger wins)
- Profit factor > 1.5
- Maximum drawdown < 15%
6. Common Mistakes to Avoid
❌ Don't: Trade all signals blindly
✅ Do: Filter by trend and volume
❌ Don't: Use same settings for all timeframes
✅ Do: Adjust parameters per timeframe
❌ Don't: Ignore overall market trend
✅ Do: Align with higher timeframe direction
❌ Don't: Over-optimize on historical data
✅ Do: Keep settings robust and simple
❌ Don't: Trade during low liquidity
✅ Do: Focus on active market hours
Quick Reference Table
| Timeframe | Style | Period | Deviation | Touch Threshold | Breakout Threshold | Squeeze | Priority Signals |
|---|---|---|---|---|---|---|---|
| 1m | Scalp | 12 | 1.5 | 0.0003 | 1.003 | Off | BB_BUY/SELL |
| 3m | Scalp | 15 | 1.8 | 0.0005 | 1.005 | Off | BB_BUY/SELL |
| 5m | Scalp | 15 | 1.8 | 0.0005 | 1.005 | Off | BB_BUY/SELL |
| 15m | Day | 20 | 2.0 | 0.001 | 1.01 | On | ALL |
| 30m | Day | 20 | 2.0 | 0.001 | 1.01 | On | ALL |
| 1h | Swing | 20 | 2.2 | 0.002 | 1.015 | On | BUY/SELL/PUMP |
| 2h | Swing | 20 | 2.2 | 0.002 | 1.015 | On | BUY/SELL/PUMP |
| 6h | Swing+ | 24 | 2.3 | 0.003 | 1.018 | On | PUMP/CRASH |
| 1d | Position | 25 | 2.5 | 0.005 | 1.02 | On | PUMP/CRASH |
Example Configuration Files
config_scalp.yaml
# 5-Minute Scalping
bb_period: 15
bb_deviation: 1.8
bb_touch_threshold: 0.0005
bb_breakout_threshold: 1.005
bb_squeeze_width_threshold: 0.015
enable_bb_touch_signal: true
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: false
supported_volatility_action: ["BB_BUY", "BB_SELL"]
supported_volatility_action_broadcast: ["BB_BUY", "BB_SELL"]
config_day.yaml
# 15-Minute Day Trading
bb_period: 20
bb_deviation: 2.0
bb_touch_threshold: 0.001
bb_breakout_threshold: 1.01
bb_squeeze_width_threshold: 0.02
enable_bb_touch_signal: true
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: true
supported_volatility_action: ["BUY", "SELL", "BB_BUY", "BB_SELL", "PUMP"]
supported_volatility_action_broadcast: ["BUY", "SELL", "PUMP", "CRASH", "BB_SELL", "BB_BUY"]
config_swing.yaml
# 1-Hour Swing Trading
bb_period: 20
bb_deviation: 2.2
bb_touch_threshold: 0.002
bb_breakout_threshold: 1.015
bb_squeeze_width_threshold: 0.025
enable_bb_touch_signal: true
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: true
supported_volatility_action: ["BUY", "SELL", "PUMP", "CRASH"]
supported_volatility_action_broadcast: ["BUY", "SELL", "PUMP", "CRASH"]
config_position.yaml
# Daily Position Trading
bb_period: 25
bb_deviation: 2.5
bb_touch_threshold: 0.005
bb_breakout_threshold: 1.02
bb_squeeze_width_threshold: 0.03
enable_bb_touch_signal: false
enable_bb_breakout_signal: true
enable_bb_squeeze_signal: true
supported_volatility_action: ["PUMP", "CRASH", "BUY", "SELL"]
supported_volatility_action_broadcast: ["PUMP", "CRASH"]
Conclusion
Bollinger Bands are versatile indicators that work across all timeframes when properly configured. Key takeaways:
- Match settings to trading style: Tighter for scalping, wider for long-term
- Choose right signal type: Touch for ranging, breakout for trending, squeeze for volatility
- Combine with other indicators: Volume, RSI, trend filters
- Backtest thoroughly: Optimize for your specific market and timeframe
- Manage risk: Always use stop losses and position sizing
Start with standard settings, then gradually optimize based on your results. Good luck trading!