Stage 07.4.3.6 — Smart alert throttling

This commit is contained in:
2026-05-04 09:05:53 +03:00
parent 8adfab7220
commit 75ba87c6d1
4 changed files with 227 additions and 2 deletions

View File

@@ -0,0 +1,158 @@
# Stage 07.4.3.6 — Smart Alert Throttling
## 🎯 Цель
Добавить интеллектуальное ограничение отправки Telegram-уведомлений о сильных сигналах (BUY / SELL), чтобы:
* исключить спам при повторяющихся сигналах
* сохранить информативность уведомлений
* не влиять на execution (открытие/закрытие позиций)
---
## ⚙️ Основные изменения
### 1. Cooldown для сигналов
Добавлено ограничение:
* одинаковый сигнал (по ключу) не отправляется чаще, чем раз в N секунд
* по умолчанию:
_strong_alert_cooldown_seconds = 120
---
### 2. Уникальный ключ сигнала
Формируется alert_key:
symbol + strategy + signal + repeat_count + confidence + decision_status + reason
Это позволяет:
* различать похожие сигналы
* не блокировать новые реальные сигналы
---
### 3. Хранение времени отправки
_last_strong_alert_at_by_key: dict[str, float]
Используется time.monotonic() для стабильного расчёта времени.
---
### 4. Подавление повторных alert-ов
Если сигнал приходит повторно в пределах cooldown:
* Telegram-сообщение НЕ отправляется
* создаётся запись в журнале:
event_type = auto_strong_signal_alert_suppressed
---
### 5. Журналирование suppressed событий
Фиксируется:
* сигнал
* инструмент
* стратегия
* confidence
* repeat_count
* оставшийся cooldown
Это позволяет:
* дебажить поведение системы
* анализировать частоту сигналов
---
## 🧠 Архитектура
Важно:
Signal (EventBus)
Alert (Telegram)
Execution (отдельно)
Throttling применяется только к alert-слою:
* ❌ не влияет на ExecutionEngine
* ❌ не влияет на AutoTradeService
* ❌ не ломает debug режим
* ✅ влияет только на отправку сообщений
---
## 🧪 Проверка
### Сценарий 1 — повтор сигнала
/debug_signal BUY
/debug_signal BUY
Ожидаемо:
* 1-й сигнал → сообщение отправлено
* 2-й сигнал → подавлен (suppressed)
---
### Сценарий 2 — другой сигнал
/debug_signal BUY
/debug_signal SELL
Ожидаемо:
* оба сообщения отправлены
---
### Сценарий 3 — после cooldown
Через 120 сек:
/debug_signal BUY
Ожидаемо:
* сообщение снова отправляется
---
### 📊 Результат
Система:
* не спамит одинаковыми сигналами
* сохраняет реакцию на новые сигналы
* полностью совместима с production execution
* логирует подавленные события
---
## 🔜 Следующий этап:
07.4.3.7 — Alert Priority & Aggregation
🧭 Обновление master-roadmap
В блоке AutoTrade / Alerts:
- Smart alert throttling (cooldown + suppression) — completed
---
## ✅ Коммит
git add .
git commit -m "Stage 07.4.3.6 — Smart alert throttling"