07.4.3.19.2 — Journal Noise Reduction & Position-aware Signal Logg

This commit is contained in:
2026-05-10 11:28:58 +03:00
parent 38e8472942
commit e72e2e51db
5 changed files with 274 additions and 21 deletions

View File

@@ -0,0 +1,171 @@
# 07.4.3.19.2 — Journal Noise Reduction & Position-aware Signal Logging
## Статус
Этап: `07.4.3.19.2`
Название: `Journal Noise Reduction & Position-aware Signal Logging`
Состояние: подготовлено к runtime-проверке после внедрения правок.
## Цель этапа
Сократить технический шум в журнале и убрать повторяющиеся уведомления о сильных сигналах, которые совпадают с уже открытой позицией.
До этапа журнал активно заполнялся техническими событиями автообновления экрана и повторными сигналами вида:
- `auto_screen_refresh_skipped`
- `auto_screen_refreshed`
- повторные strong signal alerts при уже открытой позиции
После этапа журнал должен содержать меньше технических записей и больше полезных runtime-событий.
## Что изменено
### 1. Отключены шумные UI refresh-логи
В `AutoTradeRunner` отключено журналирование обычных успешных и пропущенных обновлений экрана:
- `auto_screen_refresh_skipped`
- `auto_screen_refreshed`
Логика обновления экрана не меняется. Экран продолжает обновляться, но journal больше не заполняется техническими refresh-событиями.
Ошибки refresh остаются в журнале:
- `auto_screen_refresh_error`
- `telegram_retry_after`
- `telegram_bad_request`
- `unexpected_refresh_error`
### 2. Добавлено подавление сигналов, совпадающих с открытой позицией
Добавлена position-aware проверка перед публикацией strong signal RuntimeEvent.
Теперь:
- если открыта `LONG` позиция и приходит `BUY`, уведомление подавляется;
- если открыта `SHORT` позиция и приходит `SELL`, уведомление подавляется;
- противоположные сигналы не подавляются, так как они могут быть reversal / flip candidate.
Это снижает Telegram spam и уменьшает количество повторяющихся записей в journal.
### 3. Добавлен throttled summary в journal
Для подавленных aligned-сигналов добавлено редкое summary-событие:
- `auto_position_aligned_signal_suppressed`
Оно пишется не чаще одного раза в 15 минут для связки:
- position side
- symbol
- strategy
- signal
Это позволяет видеть, что стратегия продолжает выдавать сигналы по направлению позиции, но без лавины одинаковых записей.
## Новое поведение
### Если позиции нет
Сильный сигнал продолжает проходить в RuntimeEvent pipeline:
- `AUTO_SIGNAL_READY`
- Telegram notification
- journal notification logs
### Если открыта LONG позиция
`BUY` сигнал:
- не отправляет повторное strong signal уведомление;
- не создаёт лишний RuntimeEvent notification;
- пишет summary `auto_position_aligned_signal_suppressed` максимум раз в 15 минут.
`SELL` сигнал:
- не подавляется;
- может быть обработан как reversal / flip candidate;
- дальше проверяется execution-защитами из `07.4.3.19.1`.
### Если открыта SHORT позиция
`SELL` сигнал:
- не отправляет повторное strong signal уведомление;
- не создаёт лишний RuntimeEvent notification;
- пишет summary `auto_position_aligned_signal_suppressed` максимум раз в 15 минут.
`BUY` сигнал:
- не подавляется;
- может быть обработан как reversal / flip candidate;
- дальше проверяется execution-защитами из `07.4.3.19.1`.
## Какие файлы затронуты
Основной файл:
- `app/src/trading/auto/runner.py`
Используется существующая инфраструктура:
- `RuntimeEventPublisher`
- `RuntimeEventType.AUTO_SIGNAL_READY`
- `JournalService`
- `NotificationTargetRegistry`
## Что проверить после запуска
### 1. Compile check
`python -m compileall src`
### 2. Проверить отсутствие refresh-spam
После запуска в journal больше не должны появляться:
- `auto_screen_refresh_skipped`
- `auto_screen_refreshed`
### 3. Проверить position-aligned suppression
После открытия позиции:
- `LONG + BUY` не должен слать повторные Telegram strong signal alerts;
- `SHORT + SELL` не должен слать повторные Telegram strong signal alerts;
- в journal должен появляться `auto_position_aligned_signal_suppressed` не чаще одного раза в 15 минут.
### 4. Проверить reversal-кандидаты
Противоположные сигналы должны продолжать проходить:
- `LONG + SELL`
- `SHORT + BUY`
Они должны идти дальше в execution pipeline и проверяться flip-защитами.
## Ожидаемый эффект
После этапа journal должен стать заметно чище:
- меньше технического UI noise;
- меньше повторных signal notification events;
- меньше Telegram spam;
- лучше видны реальные execution-события:
- `paper_position_opened`
- `paper_position_closed`
- `paper_position_flipped`
- `paper_flip_blocked`
- `auto_position_aligned_signal_suppressed`
## Следующий рекомендуемый этап
`07.4.3.19.3 — Strategy Noise Filter & Signal Intent Layer`
Цель следующего этапа — не только подавлять лишние уведомления, но и классифицировать смысл сигнала относительно позиции:
- `ENTRY`
- `REINFORCE`
- `REVERSAL_CANDIDATE`
- `FLIP_ALLOWED`
- `IGNORE`