Stage 07.4.3.1 — trend strategy stabilization
This commit is contained in:
@@ -88,6 +88,7 @@
|
||||
✔ стратегия
|
||||
✔ риск
|
||||
✔ символ
|
||||
✔ leverage (default x2)
|
||||
|
||||
## 07.3 — Analysis Cycle
|
||||
✔ run_cycle()
|
||||
@@ -122,8 +123,23 @@
|
||||
### 07.4.2
|
||||
✔ Strategy Registry
|
||||
|
||||
### 07.4.3
|
||||
⏳ Trend Strategy
|
||||
### 07.4.3 — Trend Strategy
|
||||
✔ signal generation
|
||||
✔ repeat confirmation logic
|
||||
✔ confidence scoring
|
||||
✔ UI integration
|
||||
|
||||
### 07.4.3.1 — UI Optimization
|
||||
✔ compact auto screen
|
||||
✔ state-based rendering (OFF / RUNNING / OBSERVING)
|
||||
✔ minimal trading layout
|
||||
✔ duplicate info removal
|
||||
|
||||
### 07.4.3.2 — Engine Decoupling (NEXT)
|
||||
⏳ split analysis / UI refresh
|
||||
⏳ fast price polling (1s)
|
||||
⏳ slow UI updates (event-driven / 60s)
|
||||
⏳ anti-flood protection
|
||||
|
||||
### 07.4.4
|
||||
⏳ Grid Strategy
|
||||
@@ -166,5 +182,5 @@
|
||||
|
||||
## Текущий статус проекта
|
||||
|
||||
👉 Завершён: 07.4.1
|
||||
👉 Следующий шаг: 07.4.2 Strategy Registry
|
||||
👉 Завершён: 07.4.3.1
|
||||
👉 Следующий шаг: 07.4.3.2 — Engine Decoupling + Price Polling
|
||||
@@ -16,7 +16,7 @@
|
||||
✔ стратегия
|
||||
✔ риск
|
||||
✔ символ
|
||||
✔ presets UI
|
||||
✔ leverage (default x2)
|
||||
|
||||
---
|
||||
|
||||
@@ -86,8 +86,38 @@
|
||||
### 07.4.2
|
||||
✔ registry стратегий
|
||||
|
||||
### 07.4.3
|
||||
⏳ Trend strategy
|
||||
---
|
||||
|
||||
### 07.4.3 — Trend Strategy
|
||||
✔ генерация сигналов
|
||||
✔ repeat tracking
|
||||
✔ confidence logic
|
||||
✔ decision state (WAITING / CONFIRMING / READY / BLOCKED)
|
||||
|
||||
---
|
||||
|
||||
### 07.4.3.1 — UI Optimization
|
||||
✔ компактный экран автоторговли
|
||||
✔ разделение OFF / ACTIVE / OBSERVING
|
||||
✔ убраны дубли (WAITING / HOLD и т.д.)
|
||||
✔ оптимизация под mobile
|
||||
|
||||
---
|
||||
|
||||
### 07.4.3.2 — Engine Decoupling (NEXT)
|
||||
⏳ разделение:
|
||||
- analysis loop (частый)
|
||||
- UI loop (редкий)
|
||||
|
||||
⏳ price polling:
|
||||
- быстрый (1s)
|
||||
- независимый от UI
|
||||
|
||||
⏳ Telegram:
|
||||
- обновление только при изменении состояния
|
||||
- защита от flood control
|
||||
|
||||
---
|
||||
|
||||
### 07.4.4
|
||||
⏳ Grid strategy
|
||||
@@ -99,5 +129,5 @@
|
||||
|
||||
## Текущий статус
|
||||
|
||||
👉 Завершён: 07.4.1
|
||||
👉 Следующий шаг: 07.4.2
|
||||
👉 Завершён: 07.4.3.1
|
||||
👉 Следующий шаг: 07.4.3.2 — Decoupling + Price Polling
|
||||
289
docs/stages/stage-07_4_3_1-trend-strategy-stabilization.md
Normal file
289
docs/stages/stage-07_4_3_1-trend-strategy-stabilization.md
Normal file
@@ -0,0 +1,289 @@
|
||||
# 07.4.3.1 — Trend Strategy Stabilization
|
||||
|
||||
## Цель этапа
|
||||
|
||||
Стабилизировать сигналы автоторговли перед будущим execution-слоем.
|
||||
|
||||
На этапе 07.4.3 бот уже начал генерировать реальные BUY / SELL / HOLD сигналы. На этапе 07.4.3.1 добавлена логика, которая отделяет сырой сигнал стратегии от торгового решения.
|
||||
|
||||
Главная цель:
|
||||
|
||||
- не реагировать на одиночные шумовые сигналы;
|
||||
- подтверждать BUY / SELL через серию повторов;
|
||||
- учитывать confidence;
|
||||
- показывать пользователю не только сигнал, но и статус решения;
|
||||
- подготовить систему к безопасному execution.
|
||||
|
||||
---
|
||||
|
||||
## Что реализовано
|
||||
|
||||
### 1. Decision state
|
||||
|
||||
В состояние автоторговли добавлены поля торгового решения:
|
||||
|
||||
- decision_status;
|
||||
- decision_reason;
|
||||
- is_signal_confirmed;
|
||||
- is_signal_ready.
|
||||
|
||||
Статусы решения:
|
||||
|
||||
- WAITING — нет торгового направления;
|
||||
- CONFIRMING — сигнал есть, но ещё подтверждается;
|
||||
- READY — сигнал подтверждён и готов к будущему execution;
|
||||
- BLOCKED — сигнал подтверждён, но заблокирован условиями фильтра.
|
||||
|
||||
---
|
||||
|
||||
### 2. Подтверждение сигнала через повторы
|
||||
|
||||
BUY / SELL больше не считаются готовыми сразу после первого появления.
|
||||
|
||||
Текущая логика:
|
||||
|
||||
- BUY / SELL 1 раз → CONFIRMING;
|
||||
- BUY / SELL 2 раза → CONFIRMING;
|
||||
- BUY / SELL 3 раза → потенциально READY;
|
||||
- HOLD → WAITING.
|
||||
|
||||
Текущий порог подтверждения:
|
||||
|
||||
- 3 одинаковых сигнала подряд.
|
||||
|
||||
---
|
||||
|
||||
### 3. Фильтр confidence
|
||||
|
||||
Даже подтверждённый сигнал не становится READY, если confidence ниже порога.
|
||||
|
||||
Текущий порог:
|
||||
|
||||
- confidence >= 0.70.
|
||||
|
||||
Если сигнал повторился нужное количество раз, но confidence ниже 0.70, решение получает статус BLOCKED.
|
||||
|
||||
---
|
||||
|
||||
### 4. Разделение raw signal и decision
|
||||
|
||||
Сигнал стратегии и торговое решение теперь разделены.
|
||||
|
||||
Пример:
|
||||
|
||||
- raw signal: BUY;
|
||||
- repeat count: 2;
|
||||
- confidence: 0.85;
|
||||
- decision: CONFIRMING.
|
||||
|
||||
Это важно, потому что стратегия может видеть направление, но execution ещё не должен открывать сделку.
|
||||
|
||||
---
|
||||
|
||||
### 5. Улучшение экрана автоторговли
|
||||
|
||||
Экран автоторговли был подготовлен под реальную торговлю и стал компактнее.
|
||||
|
||||
Согласованный формат для выключенной автоторговли без полной настройки:
|
||||
|
||||
```text
|
||||
🤖 Автоторговля
|
||||
🔸 DEMO аккаунт
|
||||
|
||||
⚪ Выключена
|
||||
|
||||
⚠️ Не настроена
|
||||
Настрой параметры
|
||||
```
|
||||
|
||||
Согласованный формат для выключенной автоторговли с настроенными параметрами:
|
||||
|
||||
```text
|
||||
🤖 Автоторговля
|
||||
🔸 DEMO аккаунт
|
||||
|
||||
⚪ Выключена
|
||||
|
||||
BTC / USD · TREND · x2
|
||||
Risk: 0.5%
|
||||
```
|
||||
|
||||
Согласованный формат для включенной автоторговли:
|
||||
|
||||
```text
|
||||
🤖 Автоторговля
|
||||
🔸 DEMO аккаунт
|
||||
|
||||
🟢 Активна
|
||||
|
||||
BTC / USD · TREND · x2
|
||||
|
||||
🟡 HOLD ×12 · WAITING
|
||||
|
||||
Pos: — | PnL: —
|
||||
Risk: 0.5%
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 6. Форматирование инструмента для UI
|
||||
|
||||
Биржа возвращает инструмент в формате:
|
||||
|
||||
```text
|
||||
BTC/USD_LEVERAGE
|
||||
```
|
||||
|
||||
В UI отображается человекочитаемый формат:
|
||||
|
||||
```text
|
||||
BTC / USD
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 7. Плечо в настройках автоторговли
|
||||
|
||||
Добавлено поле leverage в состояние автоторговли.
|
||||
|
||||
Значение по умолчанию:
|
||||
|
||||
- x2.
|
||||
|
||||
Плечо вынесено в настройки автоторговли.
|
||||
|
||||
Доступные варианты:
|
||||
|
||||
- x1;
|
||||
- x2;
|
||||
- x3;
|
||||
- x5;
|
||||
- x10;
|
||||
- x20.
|
||||
|
||||
В UI плечо отображается компактно:
|
||||
|
||||
```text
|
||||
x2
|
||||
x5
|
||||
x20
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 8. Подготовка execution-полей
|
||||
|
||||
В AutoTradeState добавлены поля под будущий execution:
|
||||
|
||||
- position_side;
|
||||
- entry_price;
|
||||
- position_size;
|
||||
- unrealized_pnl_usd;
|
||||
- max_drawdown_usd;
|
||||
- leverage.
|
||||
|
||||
Пока execution не подключён, эти поля отображаются как заглушки.
|
||||
|
||||
---
|
||||
|
||||
### 9. Защита от лишних UI-обновлений
|
||||
|
||||
Выявлена проблема Telegram flood control при частых edit_message_text.
|
||||
|
||||
Причина:
|
||||
|
||||
- анализ и обновление Telegram UI пока работают слишком близко друг к другу;
|
||||
- live-обновления могут слишком часто редактировать одно и то же сообщение.
|
||||
|
||||
Зафиксировано решение на следующий этап:
|
||||
|
||||
- развязать частоту анализа и частоту Telegram UI;
|
||||
- обновлять UI редко или при важном изменении;
|
||||
- вынести быстрый price polling в отдельный слой.
|
||||
|
||||
---
|
||||
|
||||
## Изменённые файлы
|
||||
|
||||
```text
|
||||
app/src/trading/auto/state.py
|
||||
app/src/trading/auto/service.py
|
||||
app/src/telegram/handlers/auto.py
|
||||
app/src/telegram/handlers/system.py
|
||||
app/src/trading/auto/runner.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Поведение после этапа
|
||||
|
||||
### OFF, не настроено
|
||||
|
||||
Пользователь видит, что автоторговля выключена и параметры ещё не заданы.
|
||||
|
||||
### OFF, настроено
|
||||
|
||||
Пользователь видит текущий торговый контекст:
|
||||
|
||||
- инструмент;
|
||||
- стратегию;
|
||||
- плечо;
|
||||
- риск.
|
||||
|
||||
### OBSERVING
|
||||
|
||||
Бот анализирует рынок, считает повторы сигналов, confidence и decision_status, но не открывает сделки.
|
||||
|
||||
### RUNNING
|
||||
|
||||
Бот анализирует рынок и показывает готовность сигнала к будущему execution. Реальное исполнение сделок пока не подключено.
|
||||
|
||||
---
|
||||
|
||||
## Ограничения этапа
|
||||
|
||||
Пока не реализовано:
|
||||
|
||||
- отдельный быстрый price polling;
|
||||
- отдельная частота анализа;
|
||||
- отдельная частота Telegram UI;
|
||||
- execution;
|
||||
- реальные позиции;
|
||||
- реальные заявки;
|
||||
- риск-менеджмент исполнения.
|
||||
|
||||
---
|
||||
|
||||
## Следующий этап
|
||||
|
||||
### 07.4.3.2 — Analysis/UI Decoupling + Fast Price Polling
|
||||
|
||||
План следующего этапа:
|
||||
|
||||
- разделить частоту анализа и частоту Telegram UI;
|
||||
- получать цену чаще, например раз в 1 секунду;
|
||||
- запускать стратегию отдельно от UI;
|
||||
- обновлять Telegram не чаще заданного интервала;
|
||||
- делать force update только при важных изменениях:
|
||||
- смена signal;
|
||||
- смена decision_status;
|
||||
- CONFIRMING → READY;
|
||||
- READY → BLOCKED;
|
||||
- RUNNING → OFF;
|
||||
- ошибка / восстановление.
|
||||
|
||||
---
|
||||
|
||||
## Итог
|
||||
|
||||
На этапе 07.4.3.1 автоторговля получила слой стабилизации сигналов.
|
||||
|
||||
Система теперь различает:
|
||||
|
||||
- сырой сигнал стратегии;
|
||||
- подтверждённый сигнал;
|
||||
- готовность к будущему исполнению;
|
||||
- заблокированный сигнал;
|
||||
- отсутствие торгового направления.
|
||||
|
||||
Это ключевой шаг перед подключением execution.
|
||||
Reference in New Issue
Block a user