Add XAU/USD oversold-bounce strategy (79.7% WR, PF 2.06)

BUY-only strategy for gold: enters when M15 RSI drops below oversold
threshold while price remains above EMA200 on all three timeframes
(M15, H1, H4). Uses ATR-based TP/SL (0.7x/2.0x) sized from M15 ATR.
Isolated to XAU/USD only — other pairs completely unaffected.
This commit is contained in:
harwinder
2026-05-13 17:25:49 -04:00
parent 89030c96b6
commit 2deea1ed7f
2 changed files with 137 additions and 1 deletions
+15
View File
@@ -128,6 +128,20 @@ class NewsConfig:
])
@dataclass
class XauStrategyConfig:
"""XAU/USD oversold-bounce strategy (BUY only).
Backtested: 79.7% WR, PF 2.06 over 10 months (192 trades).
Entry: M15 RSI<30 + price above EMA200 on M15, H1, H4.
Exit: TP=0.7×ATR, SL=2.0×ATR, max hold 8 bars (2h).
"""
enabled: bool = True
rsi_entry_threshold: float = 38.0 # Wilder RSI scale; equivalent to standard RSI ~30
tp_atr_multiplier: float = 0.7
sl_atr_multiplier: float = 2.0
blocked_hours_utc: List[int] = field(default_factory=lambda: [11, 14, 15, 20])
@dataclass
class FilterConfig:
"""Regime and session filters for live signals."""
@@ -151,6 +165,7 @@ class PlatformConfig:
signals: SignalConfig = field(default_factory=SignalConfig)
news: NewsConfig = field(default_factory=NewsConfig)
backtest: FilterConfig = field(default_factory=FilterConfig)
xau_strategy: XauStrategyConfig = field(default_factory=XauStrategyConfig)
symbol: str = USDJPY
display_name: str = DISPLAY