Tune engine from backtesting: wider SL, capped TP, counter-trend filter
Backtest-driven fixes (0% win → 33% win, PF 0.00 → 1.05 over 7 days): - SL: swing buffer 0.5→1.0 ATR, min distance 1.0→1.5 ATR (more room to breathe) - TP: cap swing targets at ATR×3.0, fallback ATR×2.0 (was targeting unreachable levels) - Mature-move TP: when score>30 (A/B grade), tighten TP to ATR×1.5 (move already extended) - Counter-trend penalty: -15 confidence when signal fights regime direction - EMA200 penalties halved: -20→-10 (was killing EUR/USD signals) - Score thresholds lowered: BUY/SELL ±15→±12, STRONG ±40→±35 - Quality grades relaxed, C-grade now gets trade setups and Telegram alerts - min_rr_ratio: 1.5→1.2 - Gitignore backtest/ directory
This commit is contained in:
+2
-2
@@ -296,7 +296,7 @@ def _format_scan_summary(reports: List[SignalReport], tf: Timeframe) -> str:
|
||||
)
|
||||
lines.append("━━━━━━━━━━━━━━━━━━━━")
|
||||
|
||||
actionable = [r for r in reports if r.signal_quality in ("A+", "A", "B")]
|
||||
actionable = [r for r in reports if r.signal_quality in ("A+", "A", "B", "C")]
|
||||
if actionable:
|
||||
names = ", ".join(r.display_name for r in actionable)
|
||||
lines.append(f"🔔 Actionable: {names}")
|
||||
@@ -390,7 +390,7 @@ async def _scan_timeframe(
|
||||
_update_level_cache(reports)
|
||||
|
||||
summary = _format_scan_summary(reports, tf)
|
||||
actionable = [r for r in reports if r.signal_quality in ("A+", "A", "B")]
|
||||
actionable = [r for r in reports if r.signal_quality in ("A+", "A", "B", "C")]
|
||||
|
||||
for chat_id in list(_autoscan_chats):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user