Stage 07.4.3.3 — Paper Position & Execution Engineg
This commit is contained in:
165
docs/stages/Stage-07_4_3_3-paper_position_&_execution_engine.md
Normal file
165
docs/stages/Stage-07_4_3_3-paper_position_&_execution_engine.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# Stage 07.4.3.3 — Paper Position & Execution Engine
|
||||
|
||||
### 📌 Overview
|
||||
|
||||
На этом этапе реализован базовый Execution Engine и paper-позиции (без реальных ордеров).
|
||||
|
||||
Система теперь:
|
||||
|
||||
* принимает решение READY
|
||||
* открывает paper-позицию (LONG / SHORT)
|
||||
* синхронизирует её с UI
|
||||
* логирует событие
|
||||
* генерирует событие через EventBus
|
||||
|
||||
---
|
||||
|
||||
### 🧠 Архитектура
|
||||
|
||||
Добавлены новые слои:
|
||||
|
||||
Strategy → Signal → Decision → ExecutionEngine → PositionState
|
||||
|
||||
---
|
||||
|
||||
📂 Новые модули
|
||||
|
||||
## 1. Position Layer
|
||||
|
||||
app/src/trading/position/state.py
|
||||
|
||||
Хранит текущее состояние позиции:
|
||||
|
||||
* side (NONE / LONG / SHORT)
|
||||
* entry_price
|
||||
* size
|
||||
* leverage
|
||||
* unrealized_pnl_usd
|
||||
|
||||
---
|
||||
|
||||
## 2. Execution Models
|
||||
|
||||
app/src/trading/execution/models.py
|
||||
ExecutionDecision:
|
||||
action: str
|
||||
can_execute: bool
|
||||
reason: str
|
||||
|
||||
---
|
||||
|
||||
## 3. Execution Engine
|
||||
|
||||
app/src/trading/execution/engine.py
|
||||
|
||||
Основные функции:
|
||||
|
||||
* принимает AutoTradeState
|
||||
* проверяет:
|
||||
* RUNNING
|
||||
* READY
|
||||
* is_signal_ready
|
||||
* открывает paper-позицию
|
||||
* пишет в журнал
|
||||
* эмитит событие
|
||||
|
||||
---
|
||||
|
||||
### ⚙️ Логика execution
|
||||
|
||||
Условия открытия позиции:
|
||||
|
||||
status == RUNNING
|
||||
decision_status == READY
|
||||
is_signal_ready == True
|
||||
нет открытой позиции
|
||||
|
||||
---
|
||||
|
||||
### Mapping сигналов:
|
||||
|
||||
BUY → OPEN_LONG
|
||||
SELL → OPEN_SHORT
|
||||
|
||||
---
|
||||
|
||||
### 📊 Расчёт позиции (временно)
|
||||
|
||||
size = (risk_percent * leverage) / 100
|
||||
|
||||
Это placeholder для будущего risk engine.
|
||||
|
||||
---
|
||||
|
||||
### 🔄 Интеграция с AutoTradeService
|
||||
|
||||
В run_cycle() добавлено:
|
||||
|
||||
ExecutionEngine().process(state)
|
||||
|
||||
Теперь execution вызывается автоматически после анализа.
|
||||
|
||||
---
|
||||
|
||||
### 🖥 UI изменения
|
||||
|
||||
Экран автоторговли теперь показывает:
|
||||
|
||||
Pos: LONG | Entry: $ ... | PnL: ...
|
||||
|
||||
или:
|
||||
|
||||
Pos: NONE
|
||||
|
||||
---
|
||||
|
||||
### 🧾 Журнал
|
||||
|
||||
При открытии позиции:
|
||||
|
||||
event_type = paper_position_opened
|
||||
|
||||
payload:
|
||||
|
||||
{
|
||||
"symbol": "...",
|
||||
"side": "LONG | SHORT",
|
||||
"entry_price": ...,
|
||||
"size": ...,
|
||||
"leverage": ...,
|
||||
"signal": "...",
|
||||
"confidence": ...
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
### ⚡ EventBus
|
||||
|
||||
Новое событие:
|
||||
|
||||
paper_position_opened
|
||||
|
||||
---
|
||||
|
||||
### 🚧 Ограничения текущего этапа
|
||||
|
||||
* ❌ Нет закрытия позиции
|
||||
* ❌ Нет расчёта PnL
|
||||
* ❌ Нет реальных ордеров
|
||||
* ❌ Нет стопов / тейков
|
||||
* ❌ Нет multi-position
|
||||
|
||||
|
||||
---
|
||||
|
||||
### ✅ Результат
|
||||
|
||||
Теперь система полностью проходит путь:
|
||||
|
||||
Strategy → Signal → Decision → Execution → Position → UI
|
||||
|
||||
---
|
||||
|
||||
### 🔜 Next
|
||||
|
||||
07.4.3.4 — Strong Signal Alerts (Telegram notifications)
|
||||
Reference in New Issue
Block a user