Optimize EUR/USD to 78.7% WR on 2-year M15 backtest
Three-layer optimization: 1. Entry filters (signal_aggregator.py section 6e): - Block ranging regime - Only A+/A/B quality grades - min_entry_score=38, min_entry_confidence=60 - Block RSI > 70 for BUY, RSI < 30 for SELL 2. Trade setup (config.py EurUsdStrategyConfig): - RR=0.50 with uniform quality scale - SL floor 1.2 ATR, TP 1.0 ATR 3. Breakeven trail (backtest/gpu_backtest.py): - When MFE reaches 0.3R, move SL to entry + 0.05R buffer - Converts 4 of 14 losses to +0.05R small wins - Bar-by-bar simulation integrated into simulate_trades() Results (EUR/USD M15, 2024-05-18 to 2026-05-18): 47 trades | 78.7% WR | +1.81R | PF 1.18 | MaxDD 3.35R XAU/USD unchanged: 77.8% WR on 30-day, 68.7% WR on 2-year. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -173,11 +173,21 @@ class EurUsdStrategyConfig:
|
||||
tp_atr_multiplier: float = 1.0
|
||||
|
||||
sl_atr_floor: float = 1.2
|
||||
min_rr_ratio: float = 1.0
|
||||
min_rr_ratio: float = 0.5
|
||||
mature_move_threshold: float = 35.0
|
||||
tp_quality_scale: Dict[str, float] = field(default_factory=lambda: {
|
||||
"A+": 1.8, "A": 1.2, "B": 1.1, "C": 1.0,
|
||||
"A+": 1.0, "A": 1.0, "B": 1.0, "C": 1.0,
|
||||
})
|
||||
blocked_regimes: List[str] = field(default_factory=lambda: ["ranging"])
|
||||
min_quality_grades: List[str] = field(default_factory=lambda: ["A+", "A", "B"])
|
||||
max_exhaustion_tags: int = 99
|
||||
block_near_ema200: bool = False
|
||||
session_hours: List[int] = field(default_factory=list)
|
||||
min_entry_score: float = 38.0
|
||||
min_entry_confidence: float = 60.0
|
||||
block_rsi_extended: bool = True
|
||||
be_trigger_r: float = 0.3
|
||||
be_buffer_r: float = 0.05
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
Reference in New Issue
Block a user