Skip to main content

Technical Analysis

Overviewโ€‹

The technical analysis module processes raw market data through multiple analytical lenses to identify high-probability trading setups within the 30-minute hold constraint.

Analysis Categoriesโ€‹

1. Trend Indicatorsโ€‹

IndicatorParametersSignal
EMA Cross9/21 periodsBullish/Bearish cross
MACD12/26/9Histogram divergence
ADX14 periodsTrend strength > 25
Parabolic SAR0.02/0.2Trend reversal dots

2. Momentum Indicatorsโ€‹

IndicatorParametersSignal
RSI14 periodsOversold < 30, Overbought > 70
Stochastic14/3/3%K/%D crossover
CCI20 periodsExtreme readings ยฑ200
Williams %R14 periodsReversal zones

3. Volatility Indicatorsโ€‹

IndicatorParametersSignal
Bollinger Bands20/2ฯƒBand squeeze/expansion
ATR14 periodsPosition sizing, stop distance
Keltner Channels20/1.5Breakout confirmation

4. Volume Analysisโ€‹

IndicatorParametersSignal
VWAPSessionPrice vs fair value
OBVCumulativeDivergence from price
Volume ProfileSessionKey levels, POC

Pattern Recognitionโ€‹

Candlestick Patterns (1-5 bar)โ€‹

  • Reversal: Hammer, Shooting Star, Engulfing, Morning/Evening Star
  • Continuation: Three White Soldiers, Rising/Falling Three Methods
  • Indecision: Doji, Spinning Top, Harami

Chart Patterns (Multi-bar)โ€‹

  • Double Top/Bottom
  • Head & Shoulders
  • Ascending/Descending Triangles
  • Bull/Bear Flags
  • Wedges

Confluence Scoringโ€‹

Signals are scored based on confluence โ€” multiple indicators agreeing:

def calculate_confluence_score(signals: list[IndicatorSignal]) -> float:
"""
Score 0.0 - 1.0 based on how many indicators agree.

Weights:
- Trend alignment: 0.30
- Momentum confirmation: 0.25
- Volume confirmation: 0.20
- Pattern match: 0.15
- Key level proximity: 0.10
"""
weights = {
'trend': 0.30,
'momentum': 0.25,
'volume': 0.20,
'pattern': 0.15,
'level': 0.10
}

score = sum(
weights[s.category] * s.strength
for s in signals
if s.direction == consensus_direction(signals)
)
return min(score, 1.0)

Minimum confluence threshold for signal generation: 0.65

Timeframe Analysisโ€‹

Given the 30-minute max hold constraint:

TimeframePurpose
1-minuteEntry timing, micro-structure
5-minutePrimary signal generation
15-minuteTrend context, S/R levels
1-hourBias direction (trend filter)

Backtesting Requirementsโ€‹

  • Minimum 30 days historical data
  • Walk-forward optimization
  • Out-of-sample validation
  • Maximum drawdown tracking
  • Sharpe ratio > 1.5 target