Pro tier upgrade: quant rearchitect + WebSocket level-breach monitor
- Restore XAU/USD (Pro plan), drop USD/CAD, raise rate limit to 55/min - Reduce signal engine to 4 uncorrelated pillars (EMA, RSI, BB, Candlestick) with regime-adaptive weights (trending boosts EMA, ranging boosts RSI+BB) - Add structure-based S/R (swing highs/lows) for trade setup targeting - Fix confidence death spiral: all adjustments now additive, not multiplicative - Dynamic R:R trade setup: SL behind swing level, TP at next structure level, reject if R:R < 1.5 - Fix news engine for all 4 pairs (was hardcoded to USDJPY) - Add WebSocket monitor: streams live ticks, triggers M15 scan on level breach with 5-min cooldown per pair — catches breakouts between candle boundaries - Add correlation filter (EUR/USD+GBP/USD, XAU/USD+USD/JPY exposure warnings)
This commit is contained in:
@@ -76,9 +76,8 @@ def print_header(title: str = "USD/JPY SIGNAL INTELLIGENCE"):
|
||||
# ── Live signal renderer ───────────────────────────────────────────
|
||||
|
||||
_INDICATOR_PREFIXES = (
|
||||
"EMA Trend", "RSI", "MACD", "Bollinger Bands", "Stochastic",
|
||||
"ADX", "Ichimoku", "Divergence", "Candlestick", "Pivot Points",
|
||||
"News", "Regime",
|
||||
"EMA Trend", "RSI", "Bollinger Bands", "Divergence",
|
||||
"Candlestick", "ADX", "ATR", "News", "Regime",
|
||||
)
|
||||
|
||||
|
||||
@@ -170,13 +169,17 @@ def print_signal_report(report: SignalReport, detail: bool = False):
|
||||
|
||||
levels = report.primary_analysis.key_levels
|
||||
if levels:
|
||||
shown = [lvl for lvl in ["r3", "r2", "r1", "pivot", "s1", "s2", "s3"] if lvl in levels]
|
||||
if shown:
|
||||
print(f"\n {Colors.BOLD}Pivot Levels{Colors.RESET}")
|
||||
for lvl in shown:
|
||||
val = levels[lvl]
|
||||
swing_keys = sorted(
|
||||
[k for k in levels if k.startswith("swing_")],
|
||||
key=lambda k: levels[k], reverse=True,
|
||||
)
|
||||
if swing_keys:
|
||||
print(f"\n {Colors.BOLD}Structure Levels{Colors.RESET}")
|
||||
for k in swing_keys:
|
||||
val = levels[k]
|
||||
color = Colors.RED if val > report.current_price else Colors.GREEN
|
||||
print(f" {lvl.upper():>6} {color}{val:.3f}{Colors.RESET}")
|
||||
label = k.replace("_", " ").title()
|
||||
print(f" {label:>20} {color}{val:.3f}{Colors.RESET}")
|
||||
|
||||
|
||||
def report_to_dict(report: SignalReport) -> dict:
|
||||
|
||||
Reference in New Issue
Block a user