Enable M5 auto-scan alerts and remove live dashboard

M5 already broadcast through the shared _scan_timeframe path but was
documented as data-only (docstring, CLAUDE.md, DOCUMENTATION.md, plus a
phantom `if tf == M5: return` step that never existed in code). Align all
docs/comments so M5 alerting at C+ grade is the intended, documented behavior.

Remove the live dashboard entirely per request: the 30s refresh loop,
per-scan refresh, boot send, and the dashboard-only stats layer
(_signal_stats / _stats_updated / _update_signal_stats and its call sites,
_format_stats_dashboard and its helper constants). Drop now-unused ZoneInfo
import and dashboard mentions from help/autoscan/boot messages and the test
suite. The WebSocket level-breach monitor and level cache are untouched.

Tests: 136 passed, 0 failed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Harwinder
2026-05-20 12:45:27 -04:00
parent b61818330b
commit 643952a8e2
4 changed files with 12 additions and 183 deletions
+5 -9
View File
@@ -22,12 +22,12 @@ The bot looks at the same pair across multiple zoom levels, like looking at a ma
| Timeframe | What It Shows | How Often It Scans |
|-----------|--------------|-------------------|
| 5-Minute (M5) | Very short-term price action | Every 5 minutes — **data collection only**, no alerts |
| 5-Minute (M5) | Very short-term price action | Every 5 minutes |
| 15-Minute (M15) | Short-term moves | Every 15 minutes |
| 1-Hour (H1) | Intraday trends | Every hour |
| 4-Hour (H4) | Swing-level trends | Every 4 hours |
The M5 scan runs silently in the background — it gathers data to keep the bot's internal picture fresh, but it does not send you any messages. Only M15, H1, and H4 scans produce alerts.
All four timeframes (M5, M15, H1, H4) produce alerts at candle close when the signal grade is C or better.
## How Does It Decide What To Signal?
@@ -911,12 +911,8 @@ def _run_signal_sync(symbol, timeframe, confirmation_tfs):
1. For each symbol in SCAN_PAIRS:
report = await run_signal(symbol, tf, confirmation_tfs)
2. _update_level_cache(reports) # Refresh cached levels for WS breach detection
3. If tf == M5: return # Data only, no Telegram output
4. Filter actionable: quality in (A+, A, B, C)
5. If none actionable: log and return silently
6. Format scan summary (one-liner per pair)
7. For each autoscan chat:
Send summary message
3. Filter actionable: quality in (A+, A, B, C) # applies to every timeframe, M5 included
4. For each autoscan chat:
Send detail message per actionable signal (includes trade setup)
```
@@ -1029,7 +1025,7 @@ Terminal output includes color-coded sections:
3. **WebSocket for XAU/USD only:** The bot streams live prices via WebSocket for real-time level breach detection on gold.
4. **M5 is data-only:** The M5 scan runs every 5 minutes but only updates the level cache (used by WebSocket breach detection). It does not send Telegram messages — this reduces noise while keeping the internal picture current.
4. **M5 alerts like every timeframe:** The M5 scan runs every 5 minutes, refreshes the level cache (used by WebSocket breach detection), and sends a Telegram alert whenever the signal grade is C or better — the same path as M15/H1/H4.
5. **Graceful degradation everywhere:** If news APIs fail, signals proceed without fundamental context. If WebSocket disconnects, it reconnects with exponential backoff. If a single pair's scan fails, others continue.