# Stage 07.4.3.4 — Telegram Strong Signal Alerts

## 📌 Цель этапа

Добавить систему уведомлений в Telegram при появлении **сильного торгового сигнала**:

- Только при `BUY / SELL`
- Только при `decision_status = READY`
- Без спама (дедупликация)
- Через EventBus (без прямой связи UI ↔ стратегия)

---

## 🧠 Архитектурная идея

Strategy → AutoTradeService → EventBus → AutoTradeRunner → Telegram

- Strategy генерирует сигнал
- Service обновляет decision state
- EventBus фиксирует изменение
- Runner реагирует и отправляет сообщение

---

## ⚙️ Реализация

### 1. EventBus расширен

Добавлены дополнительные поля в событие:

```python
EventBus.emit("auto_decision_changed", {
    "decision_status": state.decision_status,
    "signal": state.last_signal,
    "repeat_count": state.last_signal_repeat_count,
    "confidence": state.last_signal_confidence,
    "symbol": state.symbol,
    "strategy": state.strategy,
    "leverage": state.leverage,
    "reason": state.last_signal_reason,
})
```
### 2. AutoTradeRunner — обработка событий

Добавлены методы:
_handle_important_event()
_send_strong_signal_alert()

Логика:

* слушаем EventBus.version()
* проверяем last_event()
* фильтруем только READY + BUY/SELL
* отправляем уведомление

### 3. Анти-спам защита

Добавлено поле:
_last_strong_alert_key

Ключ:
symbol + strategy + signal + repeat + confidence + decision_status

👉 Если ключ совпадает — сообщение не отправляется

### 4. Telegram уведомление

Формат сообщения:

🚨 Сильный сигнал 🟢 BUY

BTC/USD · TREND · x2
Confidence: 0.82
Repeats: 3

Причина: Пробой уровня сопротивления

### 5. Логирование

Добавлено событие:
auto_strong_signal_alert_sent

С payload:

* symbol
* strategy
* signal
* confidence
* repeat_count
* leverage
* reason

## ✅ Критерии готовности

✔ Уведомление приходит только при:

* BUY или SELL
* decision_status = READY

✔ Не приходит при:

* HOLD
* CONFIRMING
* BLOCKED

✔ Не спамит при каждом цикле

✔ Логируется в Journal

✔ Не ломает UI

## 🧪 Тестирование

Рекомендуемый способ

Форсирование события:

```
EventBus.emit("auto_decision_changed", {
    "decision_status": "READY",
    "signal": "BUY",
    "repeat_count": 2,
    "confidence": 0.9,
    "symbol": state.symbol,
    "strategy": state.strategy,
    "leverage": state.leverage,
    "reason": "TEST SIGNAL",
})
```

## ⚠️ Ограничения

* Нет cooldown между сигналами
* Нет разных уровней сигналов (weak/strong)
* Нет user-level подписок
* Нет отключения уведомлений

## 🚀 Следующий этап

Stage 07.4.3.5 — Debug Commands & Test Mode

Добавим:

* /debug signal BUY
* /debug ready
* test_mode=True
* override стратегии

## 📦 Итог

Этап завершает переход к event-driven архитектуре автоторговли:

* UI отвязан от логики
* Runner управляет Telegram
* Service управляет сигналами
* EventBus связывает всё

Это фундамент для:

* Execution Engine
* Risk Engine
* Real trading

## 💾 Коммит

git add .
git commit -m "Stage 07.4.3.4 — Telegram strong signal alerts via EventBus"