Files
dzentra_bot/app/src/trading/position/state.py

60 lines
1.6 KiB
Python

# app/src/trading/position/state.py
from __future__ import annotations
from dataclasses import dataclass
@dataclass(slots=True)
class PositionState:
# сторона позиции: NONE / LONG / SHORT
side: str = "NONE"
# торговый инструмент
symbol: str = ""
# id сделки, к которой относится текущая позиция
trade_id: str | None = None
# порядковый номер сделки внутри runtime
trade_sequence: int | None = None
# номер auto-cycle, в котором открыта сделка
trade_cycle_number: int | None = None
# цена входа
entry_price: float | None = None
# размер позиции
size: float | None = None
# плечо
leverage: float | None = None
# нереализованный PnL
unrealized_pnl_usd: float | None = None
# peak pnl tracking
peak_unrealized_pnl_usd: float | None = None
peak_pnl_percent: float | None = None
# lifecycle tracking
max_favorable_excursion_percent: float | None = None
max_adverse_excursion_percent: float | None = None
# runtime fatigue tracking
fatigue_score: float | None = None
fatigue_state: str | None = None
# position regime memory
best_price_seen: float | None = None
worst_price_seen: float | None = None
# время открытия позиции
opened_at: str | None = None
# monotonic timestamp открытия позиции
opened_monotonic_at: float | None = None
# время последнего обновления позиции
updated_at: str | None = None