From 98039ac910ab9afcdcb1813d00f3de8de0d2803c Mon Sep 17 00:00:00 2001 From: TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> Date: Thu, 2 Apr 2026 09:20:45 +0900 Subject: feat(strategy): Phase 3 complete — individual strategy upgrades MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RSI: bullish/bearish divergence detection (conviction 0.9) - MACD: signal-line crossover + zero-line distance conviction - Grid: trend break exit + out-of-range guard - Bollinger: squeeze detection + breakout signals + %B conviction - EMA Crossover: pullback entry mode (wait for EMA retest) - VWAP: daily reset + 1σ/2σ deviation bands + band-based conviction - Volume Profile: HVN/LVN node detection for stronger signals - Combined: adaptive weighting based on sub-strategy win rates - 363 tests passing --- services/strategy-engine/tests/test_ema_crossover_strategy.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'services/strategy-engine/tests/test_ema_crossover_strategy.py') diff --git a/services/strategy-engine/tests/test_ema_crossover_strategy.py b/services/strategy-engine/tests/test_ema_crossover_strategy.py index ee26a33..9e48478 100644 --- a/services/strategy-engine/tests/test_ema_crossover_strategy.py +++ b/services/strategy-engine/tests/test_ema_crossover_strategy.py @@ -118,11 +118,8 @@ def test_ema_pullback_entry(): # Sharp rise to force golden cross — with pullback enabled, no signal yet rising = [120, 140, 160] - signal = None for price in rising: - result = strategy.on_candle(make_candle(price)) - if result is not None: - signal = result + strategy.on_candle(make_candle(price)) # With pullback enabled, crossover should NOT produce immediate signal # but _pending_signal should be set -- cgit v1.2.3