summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-02 09:20:45 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-02 09:20:45 +0900
commit98039ac910ab9afcdcb1813d00f3de8de0d2803c (patch)
tree648753729955fc7233d00e710f983a69e42672a0 /services
parent3a256abb8c04ef07f125b0fb41f8f9090d97b136 (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')
-rw-r--r--services/strategy-engine/strategies/macd_strategy.py4
-rw-r--r--services/strategy-engine/tests/test_ema_crossover_strategy.py5
-rw-r--r--services/strategy-engine/tests/test_vwap_strategy.py2
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