Stage 07.3 - auto trading analysis cycle skeleton

This commit is contained in:
2026-04-28 13:20:59 +03:00
parent 83ab842f6e
commit d639137855
7 changed files with 178 additions and 10 deletions

View File

@@ -2,6 +2,9 @@
from __future__ import annotations
import random
from datetime import datetime
from src.core.config import load_settings
from src.trading.auto.state import AutoTradeState
@@ -9,12 +12,13 @@ from src.trading.auto.state import AutoTradeState
class AutoTradeService:
_state = AutoTradeState()
# получить текущее состояние автоторговли
def get_state(self) -> AutoTradeState:
if not self._state.symbol:
self._state.symbol = load_settings().default_symbol
return self._state
# запустить активную торговлю
def start(self) -> tuple[AutoTradeState, str]:
state = self.get_state()
@@ -28,6 +32,7 @@ class AutoTradeService:
state.status = "RUNNING"
return state, "Автоторговля запущена."
# включить режим наблюдения
def observe(self) -> tuple[AutoTradeState, str]:
state = self.get_state()
previous_status = state.status
@@ -42,6 +47,7 @@ class AutoTradeService:
return state, "Автоторговля переведена в режим наблюдения."
# полностью выключить автоторговлю
def stop(self) -> tuple[AutoTradeState, str]:
state = self.get_state()
@@ -51,17 +57,32 @@ class AutoTradeService:
state.status = "OFF"
return state, "Автоторговля выключена."
# установить инструмент
def set_symbol(self, symbol: str) -> AutoTradeState:
state = self.get_state()
state.symbol = symbol
return state
# установить стратегию
def set_strategy(self, strategy: str) -> AutoTradeState:
state = self.get_state()
state.strategy = strategy
return state
# установить риск
def set_risk_percent(self, risk_percent: float) -> AutoTradeState:
state = self.get_state()
state.risk_percent = risk_percent
return state
# выполнить один цикл анализа рынка
def run_cycle(self) -> AutoTradeState:
state = self.get_state()
if state.status == "OFF":
return state
state.last_check_at = datetime.now().strftime("%H:%M:%S")
state.last_signal = random.choice(["BUY", "SELL", "HOLD"])
return state