Stage 07.4.4.1.14 — Execution refactoring and runtime semantics

This commit is contained in:
2026-07-02 16:25:18 +03:00
parent d9e6392e28
commit e08c604ff5
72 changed files with 13626 additions and 4233 deletions

View File

@@ -11,16 +11,13 @@ from src.trading.auto.state import AutoTradeState
class AutoTradeService(AutoLifecycleMixin):
# =========================================================
# GLOBAL SERVICE STATE
# =========================================================
# единый runtime state автоторговли
# хранит:
# - сигналы
# - market context
# - execution context
# - pnl
# - PnL открытой позиции и реализованный PnL
# - lifecycle
# - protection state
_state = AutoTradeState()
@@ -32,52 +29,40 @@ class AutoTradeService(AutoLifecycleMixin):
# интервал между auto-trading циклами
# run_cycle() вызывается каждые N секунд
_loop_interval_seconds = 5
_loop_interval_seconds: int = 5
# =========================================================
# SIGNAL CONFIRMATION ENGINE
# =========================================================
# минимальное количество одинаковых BUY/SELL подряд
# чтобы сигнал считался подтвержденным
_confirm_repeats = 2
_confirm_repeats: int = 2
# минимальное время удержания сигнала
# перед execution
_confirm_min_duration_seconds = 10
_confirm_min_duration_seconds: int = 10
# =========================================================
# EXECUTION CONFIDENCE RULES
# =========================================================
# минимальный confidence для READY state
# ниже -> сигнал не считается готовым
_ready_confidence = 0.3
_ready_confidence = 0.45
# минимальный execution confidence
# для реального допуска execution engine
_execution_confidence_required_score = 0.55
_execution_confidence_required_score = 0.65
# =========================================================
# RUNTIME TTL
# =========================================================
# время жизни signal runtime
# после ttl сигнал считается устаревшим
_signal_ttl_seconds = 90
_signal_ttl_seconds: int = 90
# время жизни market analysis runtime
# после ttl market context считается stale
_market_analysis_ttl_seconds = 180
_market_analysis_ttl_seconds: int = 180
# последний logged runtime expiration key
# нужен чтобы не спамить одинаковыми логами
_last_logged_runtime_expired_key: str | None = None
# =========================================================
# SIGNAL MEMORY
# =========================================================
# уникальный ключ последнего сигнала
# используется для deduplication
_last_signal_key: str | None = None
@@ -100,40 +85,20 @@ class AutoTradeService(AutoLifecycleMixin):
# нужен для confirmation timing
_last_signal_started_at: float | None = None
# =========================================================
# MARKET STATE LOG MEMORY
# =========================================================
# последние logged market states
# нужны чтобы не дублировать одинаковые runtime logs
_last_logged_market_state: str | None = None
_last_logged_market_trend: str | None = None
_last_logged_market_volatility: str | None = None
# последнее logged reason блокировки входа
_last_logged_entry_block_reason: str | None = None
# количество одинаковых сигналов подряд
# используется confirmation engine
_same_signal_count = 0
_same_signal_count: int = 0
# =========================================================
# EXECUTION SNAPSHOT VALIDATION
# =========================================================
# максимальный допустимый возраст execution snapshot
# старше -> snapshot stale
_max_snapshot_age_seconds = 5.0
_max_snapshot_age_seconds: float = 5.0
# warning threshold snapshot age
# выше -> degraded execution quality
_warning_snapshot_age_seconds = 2.0
_warning_snapshot_age_seconds: float = 2.0
# =========================================================
# SPREAD RISK THRESHOLDS
# =========================================================
# asset-specific spread thresholds
#
# warning_enter: