diff --git a/config.py b/config.py index 49fa025..0aa2d2b 100755 --- a/config.py +++ b/config.py @@ -169,22 +169,22 @@ class EurUsdStrategyConfig: weekend_filter: bool = True allowed_weekdays: List[int] = field(default_factory=lambda: [0, 1, 2, 3, 4]) min_atr_threshold: float = 0.0003 - sl_atr_multiplier: float = 1.5 - tp_atr_multiplier: float = 1.0 + sl_atr_multiplier: float = 0.5 + tp_atr_multiplier: float = 1.5 sl_atr_floor: float = 1.2 - min_rr_ratio: float = 0.5 + min_rr_ratio: float = 1.0 mature_move_threshold: float = 35.0 tp_quality_scale: Dict[str, float] = field(default_factory=lambda: { "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"]) + blocked_regimes: List[str] = field(default_factory=list) + min_quality_grades: List[str] = field(default_factory=lambda: ["A+", "A"]) 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 + min_entry_score: float = 30.0 + min_entry_confidence: float = 50.0 block_rsi_extended: bool = True be_trigger_r: float = 0.3 be_buffer_r: float = 0.05 diff --git a/pair_signals/eurusd.py b/pair_signals/eurusd.py index cfb0827..2ef609e 100644 --- a/pair_signals/eurusd.py +++ b/pair_signals/eurusd.py @@ -32,6 +32,28 @@ EUR_REGIME_WEIGHTS = { }, } +_M5_TRENDING = { + "ema_trend": 1.5, "rsi": 1.0, "macd": 2.5, + "bollinger": 0.5, "keltner": 2.0, "roc": 2.0, + "candlestick": 0.3, "divergence": 1.0, "adx": 1.0, +} + +M5_REGIME_WEIGHTS = { + "trending_up": _M5_TRENDING, + "trending_down": _M5_TRENDING, + "trending": _M5_TRENDING, + "ranging": { + "ema_trend": 0.3, "rsi": 1.5, "macd": 1.5, + "bollinger": 1.5, "keltner": 2.0, "roc": 1.0, + "candlestick": 0.3, "divergence": 1.5, "adx": 0.5, + }, + "transitioning": { + "ema_trend": 1.0, "rsi": 1.0, "macd": 2.5, + "bollinger": 0.5, "keltner": 2.5, "roc": 2.0, + "candlestick": 0.3, "divergence": 1.0, "adx": 1.0, + }, +} + def make_config( primary_tf: Timeframe, @@ -53,6 +75,14 @@ def make_config( config.backtest.blocked_hours_utc = [22, 23, 0, 1, 2, 3] config.backtest.allowed_weekdays = [0, 1, 2, 3, 4] - config.technical.regime_weights_override = EUR_REGIME_WEIGHTS + if primary_tf == Timeframe.M5: + config.technical.regime_weights_override = M5_REGIME_WEIGHTS + config.eur_strategy.sl_atr_floor = 0.8 + config.eur_strategy.sl_atr_multiplier = 0.3 + config.eur_strategy.min_quality_grades = ["A+", "A", "B"] + config.eur_strategy.min_entry_score = 28.0 + config.eur_strategy.min_entry_confidence = 50.0 + else: + config.technical.regime_weights_override = EUR_REGIME_WEIGHTS return config