07.4.4.1.5 — Runtime Window Cleanup & Symbol Lifecycle Isolation

This commit is contained in:
2026-05-11 12:06:00 +03:00
parent 363719cc8e
commit e17f847603
10 changed files with 323 additions and 14 deletions

View File

@@ -467,6 +467,32 @@
- подготовлена база для анализа частоты причин отказа от входа
- подготовлена база для adaptive thresholds и настройки чувствительности стратегии
#### 07.4.4.1.5 ✅ Runtime Window Cleanup & Symbol Lifecycle Isolation
- внедрён lifecycle cleanup runtime-окон стратегий
- BaseStrategy расширен методом reset_runtime()
- TrendStrategy и ScalpStrategy получили runtime cleanup API
- StrategyRegistry получил reset_runtime() и reset_all_runtime()
- устранено смешивание _price_window между разными активами
- устранено смешивание runtime между TREND и SCALP
- runtime окна теперь изолированы по symbol lifecycle
- runtime окна теперь изолированы по strategy lifecycle
- при смене symbol очищается runtime старого и нового актива
- при смене strategy очищается runtime обеих стратегий
- устранены ложные BUY/SELL после переключения актива
- устранены ложные сигналы после смены стратегии
- AutoTradeService теперь полностью сбрасывает market diagnostics при reset
- очищаются market_state / market_trend / market_volatility
- очищаются market_analysis_interval / market_analysis_reason
- очищаются entry_block_reason / entry_block_message
- устранено визуальное залипание TREND_UP / TREND_DOWN в UI
- после смены актива UI возвращается в состояние “⏳ Идёт анализ”
- удалено дублирующее journal событие market_symbol_changed
- journal приведён к single-result event модели
- runtime lifecycle отделён от user-facing settings events
- подготовлена база для multi-symbol runtime engine
- подготовлена база для signal aging/reset system
- подготовлена база для adaptive runtime memory management
---
### 07.4.5

View File

@@ -443,6 +443,33 @@
- подготовлена база для анализа частоты причин отказа от входа
- подготовлена база для adaptive thresholds и настройки чувствительности стратегии
#### 07.4.4.1.5 ✅ Runtime Window Cleanup & Symbol Lifecycle Isolation
- внедрён lifecycle cleanup runtime-окон стратегий
- BaseStrategy расширен методом reset_runtime()
- TrendStrategy и ScalpStrategy получили runtime cleanup API
- StrategyRegistry получил reset_runtime() и reset_all_runtime()
- устранено смешивание _price_window между разными активами
- устранено смешивание runtime между TREND и SCALP
- runtime окна теперь изолированы по symbol lifecycle
- runtime окна теперь изолированы по strategy lifecycle
- при смене symbol очищается runtime старого и нового актива
- при смене strategy очищается runtime обеих стратегий
- устранены ложные BUY/SELL после переключения актива
- устранены ложные сигналы после смены стратегии
- AutoTradeService теперь полностью сбрасывает market diagnostics при reset
- очищаются market_state / market_trend / market_volatility
- очищаются market_analysis_interval / market_analysis_reason
- очищаются entry_block_reason / entry_block_message
- устранено визуальное залипание TREND_UP / TREND_DOWN в UI
- после смены актива UI возвращается в состояние “⏳ Идёт анализ”
- удалено дублирующее journal событие market_symbol_changed
- journal приведён к single-result event модели
- runtime lifecycle отделён от user-facing settings events
- подготовлена база для multi-symbol runtime engine
- подготовлена база для signal aging/reset system
- подготовлена база для adaptive runtime memory management
---
### 07.4.5

View File

@@ -0,0 +1,180 @@
# 07.4.4.1.5 — Runtime Window Cleanup & Symbol Lifecycle Isolation
## Цель этапа
Устранить смешивание runtime-состояния между:
- разными активами,
- разными стратегиями,
- разными lifecycle-сессиями автоторговли.
Этап стабилизирует:
- `_price_window`,
- signal tracking,
- market diagnostics,
- runtime memory.
---
# Проблема до внедрения
До этапа `07.4.4.1.5` runtime-окна стратегий жили бесконечно:
```python
_price_window: dict[str, list[float]]
```
Из-за этого возникали проблемы:
## 1. Смешивание активов
```text
BTC → накопилось 8 цен
переключение на ETH
TREND уже имеет готовое окно
ложный BUY/SELL
```
## 2. Смешивание стратегий
```text
TREND накопил runtime
SCALP получил старый runtime
моментальный сигнал
```
## 3. Залипание market state
После смены актива UI мог показывать:
```text
📉 Тренд · Нисходящий
```
хотя новый актив ещё не анализировался.
## 4. Дублирование journal-событий
Одно изменение актива вызывало:
- runtime market event,
- user settings event.
Журнал становился шумным.
---
# Что внедрено
## 1. Runtime lifecycle API стратегий
Добавлен lifecycle hook:
```python
def reset_runtime(self, symbol: str | None = None) -> None
```
## 2. Runtime cleanup в TREND и SCALP
Теперь стратегии умеют:
- очищать live runtime,
- сбрасывать окна,
- изолировать symbol runtime.
## 3. Runtime cleanup registry
В `StrategyRegistry` добавлены:
```python
reset_runtime(...)
reset_all_runtime()
```
## 4. Symbol lifecycle isolation
При смене symbol:
```python
StrategyRegistry.reset_runtime(previous_symbol)
StrategyRegistry.reset_runtime(new_symbol)
```
### Результат
```text
BTC runtime уничтожается
ETH runtime стартует с нуля
```
## 5. Strategy lifecycle isolation
При смене стратегии:
```python
StrategyRegistry.reset_runtime(previous_strategy)
StrategyRegistry.reset_runtime(new_strategy)
```
### Результат
- не наследуются старые окна,
- не переносятся старые сигналы,
- не переносится momentum.
## 6. Signal lifecycle cleanup
Теперь очищаются:
```python
market_state
market_trend
market_volatility
market_analysis_interval
market_analysis_reason
entry_block_reason
entry_block_message
```
### Результат
После смены актива UI показывает:
```text
⏳ Рынок · Идёт анализ
```
## 7. Journal cleanup
Удалено runtime событие:
```text
market_symbol_changed
```
Пользователю остаётся только итоговое событие:
```text
Автоторговля | Актив изменён: ETH
```
---
# Итог архитектуры
## До этапа
```text
Strategy runtime = бесконечная память
```
## После этапа
```text
Runtime привязан к:
- symbol
- strategy
- lifecycle session
```