Stage 07.4.3.5 — Debug commands & test mode
This commit is contained in:
@@ -147,6 +147,11 @@ class AutoTradeRunner:
|
||||
|
||||
await asyncio.sleep(cls._analysis_interval_seconds)
|
||||
|
||||
@classmethod
|
||||
async def process_last_event_now(cls) -> None:
|
||||
state = AutoTradeService().get_state()
|
||||
await cls._handle_important_event(state)
|
||||
|
||||
@classmethod
|
||||
async def _handle_important_event(cls, state) -> None:
|
||||
event_type, payload = EventBus.last_event()
|
||||
@@ -178,7 +183,8 @@ class AutoTradeRunner:
|
||||
|
||||
alert_key = (
|
||||
f"{symbol}:{strategy}:{signal}:"
|
||||
f"{repeat_count}:{confidence:.2f}:{state.decision_status}"
|
||||
f"{repeat_count}:{confidence:.2f}:"
|
||||
f"{state.decision_status}:{reason}"
|
||||
)
|
||||
|
||||
if alert_key == cls._last_strong_alert_key:
|
||||
|
||||
@@ -32,6 +32,59 @@ class AutoTradeService:
|
||||
_last_signal_payload: dict | None = None
|
||||
_same_signal_count = 0
|
||||
|
||||
# debug: принудительно выставить сигнал и decision
|
||||
def debug_force_signal(
|
||||
self,
|
||||
*,
|
||||
signal: str,
|
||||
confidence: float = 0.9,
|
||||
repeat_count: int = 2,
|
||||
reason: str = "DEBUG SIGNAL",
|
||||
) -> AutoTradeState:
|
||||
state = self.get_state()
|
||||
|
||||
normalized_signal = signal.strip().upper()
|
||||
if normalized_signal not in {"BUY", "SELL", "HOLD"}:
|
||||
normalized_signal = "HOLD"
|
||||
|
||||
previous_signal = state.last_signal
|
||||
previous_decision_status = state.decision_status
|
||||
|
||||
state.last_signal = normalized_signal
|
||||
state.last_signal_repeat_count = repeat_count
|
||||
state.last_signal_confidence = confidence
|
||||
state.last_signal_reason = reason
|
||||
|
||||
if normalized_signal == "HOLD":
|
||||
state.decision_status = "WAITING"
|
||||
state.decision_reason = "Debug HOLD."
|
||||
state.is_signal_confirmed = False
|
||||
state.is_signal_ready = False
|
||||
else:
|
||||
state.decision_status = "READY"
|
||||
state.decision_reason = "Debug READY signal."
|
||||
state.is_signal_confirmed = True
|
||||
state.is_signal_ready = True
|
||||
|
||||
EventBus.emit(
|
||||
"auto_decision_changed",
|
||||
{
|
||||
"previous_signal": previous_signal,
|
||||
"previous_decision_status": previous_decision_status,
|
||||
"decision_status": state.decision_status,
|
||||
"signal": state.last_signal,
|
||||
"repeat_count": state.last_signal_repeat_count,
|
||||
"confidence": state.last_signal_confidence,
|
||||
"symbol": state.symbol,
|
||||
"strategy": state.strategy,
|
||||
"leverage": state.leverage,
|
||||
"reason": state.last_signal_reason,
|
||||
"debug": True,
|
||||
},
|
||||
)
|
||||
|
||||
return state
|
||||
|
||||
# получить текущее состояние автоторговли
|
||||
def get_state(self) -> AutoTradeState:
|
||||
if not self._state.symbol:
|
||||
|
||||
Reference in New Issue
Block a user