07.4.4.1.9.2 Signal Confirmation Runtime

This commit is contained in:
2026-05-12 10:57:31 +03:00
parent 5325ea3855
commit fc50cadabf
8 changed files with 1122 additions and 410 deletions

View File

@@ -683,6 +683,108 @@
- подготовлена база для semantic entry filters
- подготовлена база для более точного TREND execution
#### 07.4.4.1.9.1 ✅ Market Semantic Runtime Layer
- добавлен semantic runtime layer поверх adaptive market diagnostics
- добавлена единая semantic-интерпретация market_state / trend / strength / quality / phase
- добавлена функция `_market_semantic_line()` в Telegram UI
- `_market_semantic_line()` заменяет связку `_market_state_line()` и `_market_diagnostics_line()`
- UI больше не показывает раздельно технические признаки тренда и фазы
- UI теперь показывает одно итоговое смысловое состояние рынка
- добавлена semantic-нормализация TREND_UP состояний
- добавлена semantic-нормализация TREND_DOWN состояний
- добавлена semantic-нормализация RANGE состояния
- добавлена semantic-нормализация LOW_VOLATILITY / SQUEEZE состояния
- добавлена semantic-нормализация HIGH_VOLATILITY состояния
- добавлена semantic-нормализация UNKNOWN состояния
- добавлено состояние `⚡ Рынок · сильный рост`
- добавлено состояние `⚡ Рынок · сильное снижение`
- добавлено состояние `📈 Рынок · рост`
- добавлено состояние `📉 Рынок · снижение`
- добавлено состояние `🟡 Рынок · слабый рост`
- добавлено состояние `🟡 Рынок · слабое снижение`
- добавлено состояние `⚠️ Рынок · шумный рост`
- добавлено состояние `⚠️ Рынок · шумное снижение`
- добавлено состояние `↘️ Рынок · коррекция`
- добавлено состояние `↗️ Рынок · откат вверх`
- добавлено состояние `🟰 Рынок · флэт`
- добавлено состояние `🟦 Рынок · сжатие`
- добавлено состояние `⚠️ Рынок · перегрев`
- добавлено состояние `⏳ Рынок · анализ`
- добавлен приоритет semantic-состояний рынка
- HIGH_VOLATILITY получает приоритет над обычным трендом
- LOW_VOLATILITY / SQUEEZE отображается как semantic-сжатие
- RANGE отображается как semantic-флэт
- PULLBACK отображается как коррекция или откат вверх
- NOISY trend отображается как шумный рост или шумное снижение
- WEAK trend отображается как слабый рост или слабое снижение
- STRONG + CLEAN + IMPULSE отображается как сильный рост или сильное снижение
- NORMAL + CLEAN + IMPULSE отображается как рост или снижение
- fallback по направлению тренда сохранён
- execution quality не смешивается с market semantic layer
- строки `Вход · spread`, `Вход · нет стакана`, `Вход · нет данных рынка` остались отдельными
- строка `Фильтр` осталась отдельной для причин HOLD
- экран ожидания AutoTrade переведён на semantic market line
- экран активной позиции AutoTrade переведён на semantic market line
- убрано дублирование `Тренд` + `Фаза` в UI
- экран автоторговли стал короче
- экран автоторговли стал понятнее для runtime-наблюдения
- HOLD diagnostics стали более смысловыми
- market state теперь отображается как торговый смысл, а не как raw enum
- подготовлена база для semantic entry filters
- подготовлена база для market regime scoring
- подготовлена база для adaptive threshold tuning
- подготовлена база для confidence scoring по состоянию рынка
- подготовлена база для объяснимого AutoTrade decision screen
#### 07.4.4.1.9.2 ✅ Signal Confirmation Runtime
- добавлен Signal Confirmation Runtime layer
- confirmation runtime вынесен в отдельный stateful lifecycle
- BUY / SELL больше не переходят мгновенно в READY
- добавлена runtime-фаза CONFIRMING
- confirmation теперь требует repeat consistency
- confirmation теперь требует time persistence
- добавлен minimum signal lifetime filter
- добавлен `_confirm_min_duration_seconds`
- BUY / SELL теперь обязаны удерживаться во времени
- runtime теперь анализирует signal persistence
- runtime теперь анализирует directional continuity
- runtime теперь анализирует signal lifetime
- добавлен confirmation progress runtime
- добавлен `signal_confirmation_seconds`
- добавлен `signal_confirmation_required_seconds`
- добавлен `signal_confirmation_missing_repeats`
- добавлен `signal_confirmation_progress`
- добавлен `signal_confirmation_reason`
- confirmation progress теперь рассчитывается по repeat progress
- confirmation progress теперь рассчитывается по time progress
- BUY / SELL проходят lifecycle HOLD → CONFIRMING → READY
- HOLD теперь сбрасывает confirmation progress
- HOLD теперь очищает confirmation runtime state
- READY теперь требует repeats и удержания сигнала
- добавлена защита от micro-breakout noise
- добавлена защита от single candle reversal
- добавлена защита от volatility spikes
- TREND runtime стал устойчивее к ложным импульсам
- улучшено распознавание устойчивого directional movement
- улучшена фильтрация краткосрочного рыночного шума
- Telegram UI получил runtime confirmation line
- UI показывает `⏳ Подтверждение`
- UI показывает `✅ Подтверждение · готово`
- confirmation line отображается только для BUY / SELL
- HOLD больше не показывает confirmation line
- confirmation runtime интегрирован в decision lifecycle
- decision_status теперь полноценно использует CONFIRMING state
- signal confirmation runtime синхронизирован с READY state
- debug_force_signal обновляет confirmation runtime state
- signal_ready journal events расширены confirmation analytics
- signal runtime стал более stateful
- AutoTrade приблизился к professional signal confirmation flow
- подготовлена база для adaptive confirmation thresholds
- подготовлена база для probabilistic signal scoring
- подготовлена база для multi-timeframe confirmation
- подготовлена база для direction persistence engine
- подготовлена база для execution scoring system
- подготовлена база для probabilistic signal engine
---

View File

@@ -659,6 +659,109 @@
- подготовлена база для semantic entry filters
- подготовлена база для более точного TREND execution
#### 07.4.4.1.9.1 ✅ Market Semantic Runtime Layer
- добавлен semantic runtime layer поверх adaptive market diagnostics
- добавлена единая semantic-интерпретация market_state / trend / strength / quality / phase
- добавлена функция `_market_semantic_line()` в Telegram UI
- `_market_semantic_line()` заменяет связку `_market_state_line()` и `_market_diagnostics_line()`
- UI больше не показывает раздельно технические признаки тренда и фазы
- UI теперь показывает одно итоговое смысловое состояние рынка
- добавлена semantic-нормализация TREND_UP состояний
- добавлена semantic-нормализация TREND_DOWN состояний
- добавлена semantic-нормализация RANGE состояния
- добавлена semantic-нормализация LOW_VOLATILITY / SQUEEZE состояния
- добавлена semantic-нормализация HIGH_VOLATILITY состояния
- добавлена semantic-нормализация UNKNOWN состояния
- добавлено состояние `⚡ Рынок · сильный рост`
- добавлено состояние `⚡ Рынок · сильное снижение`
- добавлено состояние `📈 Рынок · рост`
- добавлено состояние `📉 Рынок · снижение`
- добавлено состояние `🟡 Рынок · слабый рост`
- добавлено состояние `🟡 Рынок · слабое снижение`
- добавлено состояние `⚠️ Рынок · шумный рост`
- добавлено состояние `⚠️ Рынок · шумное снижение`
- добавлено состояние `↘️ Рынок · коррекция`
- добавлено состояние `↗️ Рынок · откат вверх`
- добавлено состояние `🟰 Рынок · флэт`
- добавлено состояние `🟦 Рынок · сжатие`
- добавлено состояние `⚠️ Рынок · перегрев`
- добавлено состояние `⏳ Рынок · анализ`
- добавлен приоритет semantic-состояний рынка
- HIGH_VOLATILITY получает приоритет над обычным трендом
- LOW_VOLATILITY / SQUEEZE отображается как semantic-сжатие
- RANGE отображается как semantic-флэт
- PULLBACK отображается как коррекция или откат вверх
- NOISY trend отображается как шумный рост или шумное снижение
- WEAK trend отображается как слабый рост или слабое снижение
- STRONG + CLEAN + IMPULSE отображается как сильный рост или сильное снижение
- NORMAL + CLEAN + IMPULSE отображается как рост или снижение
- fallback по направлению тренда сохранён
- execution quality не смешивается с market semantic layer
- строки `Вход · spread`, `Вход · нет стакана`, `Вход · нет данных рынка` остались отдельными
- строка `Фильтр` осталась отдельной для причин HOLD
- экран ожидания AutoTrade переведён на semantic market line
- экран активной позиции AutoTrade переведён на semantic market line
- убрано дублирование `Тренд` + `Фаза` в UI
- экран автоторговли стал короче
- экран автоторговли стал понятнее для runtime-наблюдения
- HOLD diagnostics стали более смысловыми
- market state теперь отображается как торговый смысл, а не как raw enum
- подготовлена база для semantic entry filters
- подготовлена база для market regime scoring
- подготовлена база для adaptive threshold tuning
- подготовлена база для confidence scoring по состоянию рынка
- подготовлена база для объяснимого AutoTrade decision screen
#### 07.4.4.1.9.2 ✅ Signal Confirmation Runtime
- добавлен Signal Confirmation Runtime layer
- confirmation runtime вынесен в отдельный stateful lifecycle
- BUY / SELL больше не переходят мгновенно в READY
- добавлена runtime-фаза CONFIRMING
- confirmation теперь требует repeat consistency
- confirmation теперь требует time persistence
- добавлен minimum signal lifetime filter
- добавлен `_confirm_min_duration_seconds`
- BUY / SELL теперь обязаны удерживаться во времени
- runtime теперь анализирует signal persistence
- runtime теперь анализирует directional continuity
- runtime теперь анализирует signal lifetime
- добавлен confirmation progress runtime
- добавлен `signal_confirmation_seconds`
- добавлен `signal_confirmation_required_seconds`
- добавлен `signal_confirmation_missing_repeats`
- добавлен `signal_confirmation_progress`
- добавлен `signal_confirmation_reason`
- confirmation progress теперь рассчитывается по repeat progress
- confirmation progress теперь рассчитывается по time progress
- BUY / SELL проходят lifecycle HOLD → CONFIRMING → READY
- HOLD теперь сбрасывает confirmation progress
- HOLD теперь очищает confirmation runtime state
- READY теперь требует repeats и удержания сигнала
- добавлена защита от micro-breakout noise
- добавлена защита от single candle reversal
- добавлена защита от volatility spikes
- TREND runtime стал устойчивее к ложным импульсам
- улучшено распознавание устойчивого directional movement
- улучшена фильтрация краткосрочного рыночного шума
- Telegram UI получил runtime confirmation line
- UI показывает `⏳ Подтверждение`
- UI показывает `✅ Подтверждение · готово`
- confirmation line отображается только для BUY / SELL
- HOLD больше не показывает confirmation line
- confirmation runtime интегрирован в decision lifecycle
- decision_status теперь полноценно использует CONFIRMING state
- signal confirmation runtime синхронизирован с READY state
- debug_force_signal обновляет confirmation runtime state
- signal_ready journal events расширены confirmation analytics
- signal runtime стал более stateful
- AutoTrade приблизился к professional signal confirmation flow
- подготовлена база для adaptive confirmation thresholds
- подготовлена база для probabilistic signal scoring
- подготовлена база для multi-timeframe confirmation
- подготовлена база для direction persistence engine
- подготовлена база для execution scoring system
- подготовлена база для probabilistic signal engine
---
### 07.4.5

View File

@@ -0,0 +1,452 @@
# 07.4.4.1.9.1 Market Semantic Runtime Layer
## Что сделано
Добавлен Market Semantic Runtime Layer — слой, который переводит технические состояния market analytics в понятные конечные semantic-состояния для UI и дальнейших runtime-фильтров.
До этого этапа система уже умела рассчитывать расширенную диагностику рынка:
- market_state
- market_trend
- market_volatility
- market_trend_strength
- market_trend_quality
- market_phase
- market_trend_gap_percent
- market_trend_consistency
Но UI отображал эти признаки раздельно:
- Тренд · Вверх
- Фаза · коррекция
- Качество · шум
- Сила · слабая
Это было информативно, но могло путать, потому что одно и то же состояние рынка раскладывалось на несколько строк.
На этом этапе добавлен semantic layer, который собирает runtime-признаки в одну итоговую смысловую строку.
Теперь вместо набора технических признаков экран показывает одно конечное состояние рынка:
```text
⚡ Рынок · сильный рост
```
или:
```text
↘️ Рынок · коррекция
```
или:
```text
⚠️ Рынок · шумный рост
```
## Главная цель этапа
Цель этапа — сделать market analytics не просто технической диагностикой, а понятным semantic runtime-состоянием.
Система теперь отвечает не только на вопрос:
```text
Какие технические признаки у рынка?
```
но и на вопрос:
```text
Что это состояние рынка значит для автоторговли прямо сейчас?
```
## Что изменилось в аналитике
### 1. Добавлена semantic-нормализация market state
Ранее MarketAnalysisService и TrendStrategy передавали в UI набор независимых признаков:
```text
TREND_UP
STRONG
CLEAN
IMPULSE
```
Теперь UI получает возможность интерпретировать эту комбинацию как единое смысловое состояние:
```text
⚡ Рынок · сильный рост
```
То есть слой не заменяет аналитику, а делает её результат удобным для принятия решения.
### 2. Введена единая строка состояния рынка
В Telegram UI добавлена функция:
```python
_market_semantic_line(state)
```
Она заменяет старую пару строк:
```python
_market_state_line(state)
_market_diagnostics_line(state)
```
Теперь вместо двух раздельных строк формируется одна semantic-строка.
Было:
```text
📈 Тренд · Вверх
⚡ Импульс · сильный
```
Стало:
```text
⚡ Рынок · сильный рост
```
Было:
```text
📈 Тренд · Вверх
↘️ Фаза · коррекция
```
Стало:
```text
↘️ Рынок · коррекция
```
Было:
```text
📉 Тренд · Вниз
⚠️ Качество · шум
```
Стало:
```text
⚠️ Рынок · шумное снижение
```
### 3. Убрано дублирование смыслов в UI
До этапа состояние рынка могло одновременно отображаться как:
```text
📈 Тренд · Вверх
↘️ Фаза · коррекция
```
или:
```text
🟰 Рынок · Флэт
```
и это смешивало уровни анализа:
- направление
- фазу
- качество
- силу
- применимость для входа
После внедрения semantic layer UI показывает итоговую интерпретацию, а не набор технических слоёв.
### 4. Добавлена приоритетность market semantics
При формировании semantic-состояния используется приоритет:
1. UNKNOWN
2. HIGH_VOLATILITY
3. LOW_VOLATILITY / SQUEEZE
4. RANGE
5. PULLBACK
6. NOISY
7. WEAK
8. STRONG IMPULSE
9. NORMAL IMPULSE
10. fallback по направлению тренда
Это важно, потому что одно состояние может содержать несколько признаков одновременно.
Например:
```text
TREND_UP + NOISY + PULLBACK
```
В этом случае важнее показать:
```text
↘️ Рынок · коррекция
```
а не просто:
```text
⚠️ Рынок · шумный рост
```
Потому что pullback сильнее влияет на вход TREND-стратегии.
### 5. Улучшена читаемость TREND-аналитики
Для стратегии TREND semantic layer особенно важен, потому что стратегия работает только тогда, когда рынок не просто направленный, а достаточно качественный для входа.
Теперь пользователь видит не внутреннюю механику:
```text
trend=UP
strength=WEAK
quality=CLEAN
phase=RANGE
```
а итог:
```text
🟡 Рынок · слабый рост
```
или:
```text
⚠️ Рынок · шумный рост
```
или:
```text
↘️ Рынок · коррекция
```
Это упрощает понимание причин HOLD.
## Поддерживаемые semantic-состояния рынка
### Рост
```text
⚡ Рынок · сильный рост
📈 Рынок · рост
🟡 Рынок · слабый рост
⚠️ Рынок · шумный рост
↘️ Рынок · коррекция
```
### Снижение
```text
⚡ Рынок · сильное снижение
📉 Рынок · снижение
🟡 Рынок · слабое снижение
⚠️ Рынок · шумное снижение
↗️ Рынок · откат вверх
```
### Нейтральные состояния
```text
🟰 Рынок · флэт
🟦 Рынок · сжатие
⚠️ Рынок · перегрев
⏳ Рынок · анализ
```
## Как semantic-состояния связаны с TREND-стратегией
### Потенциально рабочие состояния
Эти состояния могут быть пригодны для входа, если live-импульс подтвердит направление:
```text
⚡ Рынок · сильный рост
📈 Рынок · рост
⚡ Рынок · сильное снижение
📉 Рынок · снижение
```
### Блокирующие или HOLD-состояния
Эти состояния не являются подходящими для TREND-входа:
```text
🟡 Рынок · слабый рост
🟡 Рынок · слабое снижение
⚠️ Рынок · шумный рост
⚠️ Рынок · шумное снижение
↘️ Рынок · коррекция
↗️ Рынок · откат вверх
🟰 Рынок · флэт
🟦 Рынок · сжатие
⚠️ Рынок · перегрев
⏳ Рынок · анализ
```
Важно: semantic line сама по себе не открывает и не блокирует сделку.
Решение принимает TrendStrategy и ExecutionEngine.
Но semantic line теперь корректно показывает пользователю смысл этого решения.
## Что изменилось в Telegram UI
### Было
UI показывал технические строки:
```text
📈 Тренд · Вверх
↘️ Фаза · коррекция
🧩 Фильтр · откат
⚠️ Вход · spread 0.12%
```
### Стало
UI показывает одну смысловую строку рынка:
```text
↘️ Рынок · коррекция
🧩 Фильтр · откат
⚠️ Вход · spread 0.12%
```
Или в рабочем сценарии:
```text
⚡ Рынок · сильный рост
```
Если дополнительных блокировок нет, лишние строки не отображаются.
## Разделение ответственности строк UI
После этапа строки разделены так:
### Сигнал
Показывает текущий торговый сигнал стратегии:
```text
Сигнал 🟡 HOLD · 27с
Сигнал 🟢 BUY · READY
Сигнал 🔴 SELL · READY
```
### Рынок
Показывает semantic-состояние market analytics:
```text
⚡ Рынок · сильный рост
↘️ Рынок · коррекция
🟰 Рынок · флэт
```
### Фильтр
Показывает причину, почему стратегия не даёт вход:
```text
🧩 Фильтр · слабый тренд
🧩 Фильтр · шумный тренд
🧩 Фильтр · откат
```
### Вход
Показывает проблемы именно execution/runtime качества:
```text
⚠️ Вход · spread 0.12%
⛔ Вход · высокий spread 0.18%
⚠️ Вход · нет стакана
⛔ Вход · нет данных рынка
```
## Что было исправлено
- убрано дублирование строк market state и diagnostics
- устранена неоднозначность между “Тренд”, “Рынок”, “Фаза”, “Качество”
- semantic-состояние рынка теперь отображается одной строкой
- UI стал стабильнее и короче
- экран автоторговли стал легче читать
- состояния рынка стали ближе к смыслу торгового решения
- HOLD-причины стали понятнее
- состояние “рынок готов” больше не перегружает UI лишними строками
- execution quality остался отдельным от market semantics
## Что осталось отдельным от semantic layer
Market Semantic Runtime Layer не заменяет execution quality.
То есть строки вида:
```text
⚠️ Вход · spread 0.12%
⛔ Вход · высокий spread 0.18%
```
остаются отдельными, потому что они относятся не к анализу направления рынка, а к качеству входа и возможности исполнения.
Это правильное разделение:
- `Рынок` — что происходит с market structure
- `Фильтр` — почему стратегия не входит
- `Вход` — можно ли технически исполнить вход
## Проверка
После внедрения нужно проверить:
```bash
python -m compileall src
```
Runtime-проверка:
- экран автоторговли открывается
- Auto screen refresh не падает
- строка `Рынок` отображается одной semantic-строкой
- нет одновременного дубля `Тренд · Вверх` + `Фаза · ...`
- HOLD timer продолжает обновляться
- при слабом тренде отображается `🟡 Рынок · слабый рост/снижение`
- при шумном тренде отображается `⚠️ Рынок · шумный рост/снижение`
- при откате отображается `↘️ Рынок · коррекция` или `↗️ Рынок · откат вверх`
- при флэте отображается `🟰 Рынок · флэт`
- при squeeze отображается `🟦 Рынок · сжатие`
- при высокой волатильности отображается `⚠️ Рынок · перегрев`
- execution quality продолжает отображаться отдельной строкой `Вход`
- spread warning не смешивается со строкой `Рынок`
- active position screen тоже использует semantic market line
## Результат
Этап завершил переход от raw market diagnostics к semantic runtime-представлению.
Теперь система имеет три уровня:
1. MarketAnalysisService рассчитывает технические признаки.
2. TrendStrategy использует признаки для HOLD / BUY / SELL.
3. Telegram UI показывает человеку итоговое semantic-состояние рынка.
Это подготовило базу для следующих этапов:
- semantic entry filters
- adaptive threshold tuning
- market regime scoring
- confidence scoring по semantic-состояниям
- более точного TREND execution
- future strategy arbitration
- объяснимого AutoTrade decision screen

View File

@@ -0,0 +1,212 @@
# 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 анализирует не только факт сигнала, но и устойчивость направления во времени.