# 07.4.4.1.9.2 Signal Confirmation Runtime

## Что сделано

Добавлен Signal Confirmation Runtime — отдельный runtime-слой подтверждения торгового сигнала, который находится между raw BUY/SELL сигналом стратегии и итоговым READY-состоянием AutoTrade.

До этого этапа система подтверждала сигнал только количеством одинаковых повторов:

```text
BUY → BUY
```

или:

```text
SELL → SELL
```

После достижения `_confirm_repeats` сигнал сразу переходил в:

```text
READY
```

Теперь подтверждение сигнала стало полноценным runtime-процессом, который требует:

1. повторяемости сигнала
2. удержания сигнала во времени

---

# Главная цель этапа

Цель этапа — научить AutoTrade отличать:

```text
кратковременный рыночный шум
```

от:

```text
устойчивого directional impulse
```

Теперь система оценивает не только:

```text
Что сигнал появился
```

но и:

```text
Насколько стабильно рынок удерживает это направление
```

---

# Что изменилось в аналитике

## 1. Подтверждение стало time-aware

Ранее confirmation runtime был только repeat-based:

```text
BUY → BUY → READY
```

Теперь confirmation стал:

```text
BUY
→ BUY удерживается
→ BUY повторяется
→ BUY живёт достаточно долго
→ READY
```

---

## 2. Добавлен runtime-анализ устойчивости сигнала

Signal Confirmation Runtime теперь анализирует:

- длительность жизни BUY/SELL
- стабильность направления
- количество повторов
- consistency сигнала во времени

---

## 3. Добавлен signal lifetime tracking

В `AutoTradeState` добавлены:

```python
signal_confirmation_seconds
signal_confirmation_required_seconds
signal_confirmation_missing_repeats
signal_confirmation_progress
signal_confirmation_reason
```

---

## 4. BUY/SELL теперь проходят confirmation phase

Ранее жизненный цикл был:

```text
HOLD
→ BUY
→ READY
```

Теперь:

```text
HOLD
→ BUY
→ CONFIRMING
→ READY
```

или:

```text
HOLD
→ SELL
→ CONFIRMING
→ READY
```

---

## 5. Добавлен signal persistence filter

Теперь сигнал обязан удерживаться минимум:

```python
_confirm_min_duration_seconds = 10
```

Даже если repeats уже подтверждены — READY не наступит, пока сигнал не проживёт достаточное время.

---

# Что изменилось в Telegram UI

## Добавлена runtime-строка подтверждения сигнала

Для BUY/SELL теперь отображается:

```text
⏳ Подтверждение · 1/2 · 4/10с
```

или:

```text
✅ Подтверждение · готово
```

## HOLD больше не показывает confirmation line

HOLD отображается как раньше:

```text
Сигнал 🟡 HOLD · 54с
```

без confirmation runtime строки.

---

# Проверка

После внедрения:

```bash
python -m compileall src
```

Runtime-проверка:

- HOLD не показывает confirmation line
- BUY показывает `⏳ Подтверждение`
- SELL показывает `⏳ Подтверждение`
- READY показывает `✅ Подтверждение · готово`
- READY не появляется мгновенно
- READY требует repeats
- READY требует удержания сигнала
- HOLD сбрасывает confirmation progress

---

# Результат

Этап завершил переход от:

```text
repeat-based signal confirmation
```

к:

```text
stateful runtime confirmation engine
```

Теперь AutoTrade анализирует не только факт сигнала, но и устойчивость направления во времени.
