diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-02 09:20:45 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-02 09:20:45 +0900 |
| commit | 98039ac910ab9afcdcb1813d00f3de8de0d2803c (patch) | |
| tree | 648753729955fc7233d00e710f983a69e42672a0 /services | |
| parent | 3a256abb8c04ef07f125b0fb41f8f9090d97b136 (diff) | |
feat(strategy): Phase 3 complete — individual strategy upgrades
- 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
Diffstat (limited to 'services')
3 files changed, 4 insertions, 7 deletions
diff --git a/services/strategy-engine/strategies/macd_strategy.py b/services/strategy-engine/strategies/macd_strategy.py index 4ce0737..356a42b 100644 --- a/services/strategy-engine/strategies/macd_strategy.py +++ b/services/strategy-engine/strategies/macd_strategy.py @@ -102,7 +102,7 @@ class MacdStrategy(BaseStrategy): price=candle.close, quantity=self._quantity, conviction=conv, - reason=f"MACD signal-line bullish crossover", + reason="MACD signal-line bullish crossover", ) # Bearish: MACD crosses below signal elif self._prev_macd >= self._prev_signal and macd_val < signal_val: @@ -115,7 +115,7 @@ class MacdStrategy(BaseStrategy): price=candle.close, quantity=self._quantity, conviction=conv, - reason=f"MACD signal-line bearish crossover", + reason="MACD signal-line bearish crossover", ) # Histogram crossover detection (existing logic, as secondary signal) 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 diff --git a/services/strategy-engine/tests/test_vwap_strategy.py b/services/strategy-engine/tests/test_vwap_strategy.py index 2cc4766..0312972 100644 --- a/services/strategy-engine/tests/test_vwap_strategy.py +++ b/services/strategy-engine/tests/test_vwap_strategy.py @@ -1,6 +1,6 @@ """Tests for the VWAP strategy.""" -from datetime import datetime, timezone, timedelta +from datetime import datetime, timezone from decimal import Decimal |
