refactor(auto): finalize runtime state reset cleanup
This commit is contained in:
@@ -23,6 +23,8 @@ from src.trading.auto.state_reset import (
|
||||
reset_position_semantics_state,
|
||||
reset_runtime_expiration_state,
|
||||
reset_signal_runtime_state,
|
||||
reset_execution_block_state,
|
||||
reset_position_health_state,
|
||||
)
|
||||
from src.trading.execution.engine import ExecutionEngine
|
||||
from src.trading.strategies.base import BaseStrategy, StrategyContext
|
||||
@@ -108,7 +110,7 @@ class AutoLifecycleMixin(
|
||||
numeric_value = 1000.0
|
||||
|
||||
state.allocated_balance_usd = numeric_value
|
||||
state.execution_block_reason = None
|
||||
reset_execution_block_state(state)
|
||||
state.execution_size_adjustment_reason = None
|
||||
return state
|
||||
|
||||
@@ -159,10 +161,7 @@ class AutoLifecycleMixin(
|
||||
# чтобы запуск не наследовал паузу прошлого цикла.
|
||||
reset_loss_cooldown_state(state)
|
||||
|
||||
state.execution_block_title = None
|
||||
state.execution_block_message = None
|
||||
state.execution_block_action = None
|
||||
state.execution_block_reason = None
|
||||
reset_execution_block_state(state)
|
||||
|
||||
EventBus.emit(
|
||||
"auto_status_changed",
|
||||
@@ -344,7 +343,7 @@ class AutoLifecycleMixin(
|
||||
def set_max_reserved_balance_percent(self, value: NumericLike | None) -> AutoTradeState:
|
||||
state = self.get_state()
|
||||
state.max_reserved_balance_percent = safe_float(value)
|
||||
state.execution_block_reason = None
|
||||
reset_execution_block_state(state)
|
||||
return state
|
||||
|
||||
def _reset_signal_tracking(self) -> None:
|
||||
@@ -374,17 +373,7 @@ class AutoLifecycleMixin(
|
||||
self._execution_confidence_required_score
|
||||
)
|
||||
|
||||
state.position_pnl_percent = None
|
||||
state.position_hold_seconds = None
|
||||
state.position_pressure = None
|
||||
state.position_health_score = None
|
||||
state.position_health_status = None
|
||||
state.position_health_reason = None
|
||||
state.position_risk_level = None
|
||||
state.position_risk_reason = None
|
||||
state.position_trend_alignment = None
|
||||
state.position_adverse_momentum = False
|
||||
state.position_exit_pressure = None
|
||||
reset_position_health_state(state)
|
||||
|
||||
def _build_strategy_context(self) -> StrategyContext:
|
||||
state = self.get_state()
|
||||
|
||||
@@ -5,6 +5,7 @@ from __future__ import annotations
|
||||
from src.core.numbers import safe_float
|
||||
from src.core.types import NumericLike
|
||||
from src.trading.auto.state import AutoTradeState
|
||||
from src.trading.auto.state_reset import reset_position_health_state
|
||||
from src.trading.execution.constants import (
|
||||
EXECUTION_QUALITY_BLOCKED,
|
||||
EXECUTION_QUALITY_WARNING,
|
||||
@@ -37,17 +38,7 @@ class AutoPositionHealthMixin:
|
||||
# синхронизировать runtime health/risk состояние открытой позиции
|
||||
def _sync_position_health_state(self, state: AutoTradeState) -> None:
|
||||
if state.position_side == "NONE" or state.entry_price is None:
|
||||
state.position_pnl_percent = None
|
||||
state.position_hold_seconds = None
|
||||
state.position_pressure = None
|
||||
state.position_health_score = None
|
||||
state.position_health_status = None
|
||||
state.position_health_reason = None
|
||||
state.position_risk_level = None
|
||||
state.position_risk_reason = None
|
||||
state.position_trend_alignment = None
|
||||
state.position_adverse_momentum = False
|
||||
state.position_exit_pressure = None
|
||||
reset_position_health_state(state)
|
||||
return
|
||||
|
||||
# PnL % и время удержания больше не считаем здесь.
|
||||
|
||||
@@ -4,6 +4,7 @@ from __future__ import annotations
|
||||
|
||||
from src.core.numbers import safe_float
|
||||
from src.trading.auto.state import AutoTradeState
|
||||
from src.trading.auto.state_reset import reset_position_semantics_state
|
||||
from src.trading.execution.constants import (
|
||||
POSITION_EXIT_DAMPING_MATURE_MULTIPLIER,
|
||||
POSITION_EXIT_DAMPING_MATURE_SECONDS,
|
||||
@@ -33,25 +34,7 @@ class AutoPositionSemanticsMixin:
|
||||
# синхронизировать semantics-состояние открытой позиции
|
||||
def _sync_position_semantics_state(self, state: AutoTradeState) -> None:
|
||||
if state.position_side == "NONE" or state.entry_price is None:
|
||||
state.position_lifecycle_stage = None
|
||||
state.position_hold_quality = None
|
||||
state.position_decay_state = None
|
||||
state.position_exit_confidence = None
|
||||
state.position_exit_signal = None
|
||||
state.position_intelligence_reason = None
|
||||
state.position_recommended_action = None
|
||||
state.position_peak_pnl_usd = None
|
||||
state.position_peak_pnl_percent = None
|
||||
state.position_mfe_percent = None
|
||||
state.position_mae_percent = None
|
||||
state.position_fatigue_score = None
|
||||
state.position_fatigue_state = None
|
||||
state.position_giveback_percent = None
|
||||
state.position_conviction_state = None
|
||||
state.position_exit_urgency = None
|
||||
state.position_reversal_risk = None
|
||||
state.position_stall_state = None
|
||||
state.position_stall_reason = None
|
||||
reset_position_semantics_state(state)
|
||||
return
|
||||
|
||||
lifecycle_stage = self._position_lifecycle_stage(state)
|
||||
|
||||
Reference in New Issue
Block a user