Refocus on XAU/USD: add momentum indicators, tune TP, exhaustion block

Strip EUR/USD, GBP/USD, USD/JPY pairs and strategies from entire codebase.
Add 3 new scored indicators (ROC, Keltner/TTM Squeeze, ADX slope) and
enable MACD-as-pillar + divergence detection for early trend entry.
Introduce "transitioning" regime (ADX < 25, slope > 3.0) to catch trend
births before ADX confirms. Gold-specific composite weights per regime.

Tune TP multipliers: quality-tiered scaling (A+/A get 1.5-2.0x ATR via
XAU ATR method, B/C use swing-level targeting). Backtest: +24R total,
65% WR, PF 1.12 over 365 days.

Add momentum-confirmed exhaustion block: hard-reject trades when 2+
static exhaustion signals fire AND ROC/MACD confirm fading momentum.
Prevents late trend entries without killing strong trend trades.

Telegram: simplify buttons to timeframe-only labels, add "Scan All TFs"
multi-timeframe summary, add /scan command, fix BB/KC level breach keys,
fix price formatting (.2f for gold), fix deprecated asyncio call, fix
"1 pairs" grammar and 60s/30s dashboard refresh mismatch.
This commit is contained in:
harwinder
2026-05-15 10:51:51 -04:00
parent bb3c475f22
commit 04328eaeab
15 changed files with 852 additions and 2108 deletions
+6 -6
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
"""
ForexBot2 — USD/JPY Signal Intelligence (single-pair)
=======================================================
ForexBot2 — XAU/USD Signal Intelligence
========================================
Usage:
python main.py # Live signal on H1
python main.py --timeframe H4 --detail # Detailed H4 signal
@@ -21,7 +21,7 @@ if hasattr(sys.stdout, "reconfigure"):
if hasattr(sys.stderr, "reconfigure"):
sys.stderr.reconfigure(encoding="utf-8")
from config import PlatformConfig, Timeframe, SignalStrength, USDJPY, DISPLAY
from config import PlatformConfig, Timeframe, SignalStrength, XAUUSD
from signal_aggregator import SignalAggregator, SignalReport
@@ -65,7 +65,7 @@ def quality_color(q: str) -> str:
}.get(q, Colors.RESET)
def print_header(title: str = "USD/JPY SIGNAL INTELLIGENCE"):
def print_header(title: str = "XAU/USD SIGNAL INTELLIGENCE"):
now = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S UTC")
print(f"\n{Colors.CYAN}{'═' * 80}{Colors.RESET}")
print(f"{Colors.BOLD}{Colors.CYAN} {title}{Colors.RESET}")
@@ -239,7 +239,7 @@ def report_to_dict(report: SignalReport) -> dict:
def parse_args():
parser = argparse.ArgumentParser(
description="ForexBot2 — USD/JPY Signal Intelligence",
description="ForexBot2 — XAU/USD Signal Intelligence",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Examples:
@@ -295,7 +295,7 @@ def run_live(args, config: PlatformConfig):
print(json.dumps(report_to_dict(report), indent=2))
return
print_header("USD/JPY SIGNAL INTELLIGENCE")
print_header("XAU/USD SIGNAL INTELLIGENCE")
print_signal_report(report, detail=args.detail)
print(f"\n{Colors.CYAN}{'═' * 80}{Colors.RESET}")
print(f"{Colors.GRAY} Disclaimer: For educational/research purposes only.{Colors.RESET}")