refactor(auto): use reset helpers for signal runtime expiration

This commit is contained in:
2026-07-02 22:05:33 +03:00
parent 954ca0e427
commit 73ea891843

View File

@@ -10,6 +10,10 @@ from src.core.numbers import safe_float
from src.core.types import JsonDict, NumericLike from src.core.types import JsonDict, NumericLike
from src.integrations.exchange.service import ExchangeService from src.integrations.exchange.service import ExchangeService
from src.trading.auto.state import AutoTradeState from src.trading.auto.state import AutoTradeState
from src.trading.auto.state_reset import (
reset_after_market_runtime_expired,
reset_after_signal_runtime_expired,
)
from src.trading.journal.service import JournalService from src.trading.journal.service import JournalService
@@ -733,25 +737,13 @@ class AutoSignalRuntimeMixin:
self._last_signal_started_at = None self._last_signal_started_at = None
self._same_signal_count = 0 self._same_signal_count = 0
state.last_signal = "HOLD" reset_after_signal_runtime_expired(state)
state.last_signal_repeat_count = 0
state.last_signal_confidence = 0.0
state.last_signal_reason = None
state.signal_started_at = None
state.signal_updated_at = None
state.decision_status = "WAITING"
state.decision_reason = "Сигнал устарел." state.decision_reason = "Сигнал устарел."
state.is_signal_confirmed = False
state.is_signal_ready = False
state.signal_confirmation_seconds = 0
state.signal_confirmation_missing_repeats = self._confirm_repeats state.signal_confirmation_missing_repeats = self._confirm_repeats
state.signal_confirmation_progress = 0.0 state.execution_confidence_required_score = (
state.signal_confirmation_reason = None self._execution_confidence_required_score
state.execution_confidence_score = None )
state.execution_confidence_level = None
state.execution_confidence_reason = None
state.execution_confidence_factors = None
state.execution_confidence_required_score = self._execution_confidence_required_score
state.runtime_expired_reason = "SIGNAL_TTL_EXPIRED" state.runtime_expired_reason = "SIGNAL_TTL_EXPIRED"
state.runtime_expired_message = "сигнал устарел и был сброшен" state.runtime_expired_message = "сигнал устарел и был сброшен"
@@ -779,64 +771,7 @@ class AutoSignalRuntimeMixin:
market_age = now - market_updated market_age = now - market_updated
if market_age > self._market_analysis_ttl_seconds: if market_age > self._market_analysis_ttl_seconds:
state.market_state = None reset_after_market_runtime_expired(state)
state.market_trend = None
state.market_volatility = None
state.market_analysis_interval = None
state.market_analysis_reason = None
state.market_analysis_updated_at = None
state.entry_block_reason = None
state.entry_block_message = None
state.market_trend_strength = None
state.market_trend_quality = None
state.market_phase = None
state.market_phase_direction = None
state.current_interval_change_percent = None
state.current_interval_direction = None
state.current_interval_label = None
state.last_closed_candle_change_percent = None
state.last_closed_candle_direction = None
# Сбрасываем общую оценку рынка вместе с market context,
# чтобы UI не показывал старый процент после истечения TTL.
state.market_score = None
state.market_score_label = None
state.market_long_score = None
state.market_short_score = None
state.market_structure = None
state.market_structure_reason = None
state.market_trend_gap_percent = None
state.market_trend_consistency = None
state.market_trend_efficiency = None
state.trend_quality_score = None
state.ema_distance_atr_ratio = None
state.ema_distance_state = None
state.entry_timing_state = None
state.entry_timing_reason = None
state.ema_fast_slope_percent = None
state.ema_slow_slope_percent = None
state.candle_noise_score = None
state.price_position_score = None
state.htf_interval = None
state.htf_atr_percent = None
state.htf_atr_percent_baseline = None
state.htf_volatility_ratio = None
state.htf_volatility = None
state.htf_market_state = None
state.htf_trend = None
state.htf_trend_strength = None
state.htf_trend_quality = None
state.htf_market_phase = None
state.htf_alignment = None
state.htf_confirmation_score = None
state.htf_reason = None
state.momentum_state = None
state.momentum_direction = None
state.momentum_change_percent = None
state.momentum_strength = None
state.breakout_level = None
state.breakout_distance_percent = None
state.breakout_reason = None
state.runtime_expired_reason = "MARKET_ANALYSIS_TTL_EXPIRED" state.runtime_expired_reason = "MARKET_ANALYSIS_TTL_EXPIRED"
state.runtime_expired_message = "анализ рынка устарел" state.runtime_expired_message = "анализ рынка устарел"