07.4.3.19.2 — Journal Noise Reduction & Position-aware Signal Logg
This commit is contained in:
@@ -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`
|
||||
Reference in New Issue
Block a user