842631744c
- indicator_service.py: _detect_bos()/market_structure() now scale the break-confirmation buffer by the symbol's own current ATR% instead of a fixed 0.3% for every symbol; falls back to the fixed value when ATR% isn't supplied. - indicator_service.py: detect_fvg() rejects gaps smaller than 10% of current ATR% when atr_pct is given, filtering noise-sized gaps that carried no real "unfilled order" significance on low timeframes. - candle_service.py: computes ATR% earlier so it can feed both market_structure() and detect_fvg(), not just detect_market_regime(); backtest_engine.py reuses the same per-candle ATR% for BOS instead of computing it twice. - indicator_service.py: ichimoku() takes tenkan/kijun/senkou_b_period and displacement as parameters (defaults unchanged at 9/26/52/26) so a future walk-forward comparison against crypto-scaled periods doesn't require editing the function — the classic Japanese-calendar defaults aren't changed here since that needs empirical validation, not a guess. 232 backend tests pass (+13). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>