feat: 07.4.1 base strategy + 07.4.2 strategy registry + docs sync
This commit is contained in:
1
app/src/storage/repositories/__init__.py
Normal file
1
app/src/storage/repositories/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"""Package marker."""
|
||||||
1
app/src/telegram/live/__init__.py
Normal file
1
app/src/telegram/live/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"""Package marker."""
|
||||||
1
app/src/trading/auto/__init__.py
Normal file
1
app/src/trading/auto/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"""Package marker."""
|
||||||
@@ -3,11 +3,12 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import random
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from src.core.config import load_settings
|
from src.core.config import load_settings
|
||||||
from src.trading.auto.state import AutoTradeState
|
from src.trading.auto.state import AutoTradeState
|
||||||
|
from src.trading.strategies.base import BaseStrategy, StrategyContext
|
||||||
|
from src.trading.strategies.registry import StrategyRegistry
|
||||||
|
|
||||||
|
|
||||||
class AutoTradeService:
|
class AutoTradeService:
|
||||||
@@ -106,7 +107,7 @@ class AutoTradeService:
|
|||||||
# установить стратегию
|
# установить стратегию
|
||||||
def set_strategy(self, strategy: str) -> AutoTradeState:
|
def set_strategy(self, strategy: str) -> AutoTradeState:
|
||||||
state = self.get_state()
|
state = self.get_state()
|
||||||
state.strategy = strategy
|
state.strategy = strategy.strip().upper()
|
||||||
return state
|
return state
|
||||||
|
|
||||||
# установить риск
|
# установить риск
|
||||||
@@ -115,6 +116,21 @@ class AutoTradeService:
|
|||||||
state.risk_percent = risk_percent
|
state.risk_percent = risk_percent
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
# собрать контекст для стратегии
|
||||||
|
def _build_strategy_context(self) -> StrategyContext:
|
||||||
|
state = self.get_state()
|
||||||
|
|
||||||
|
return StrategyContext(
|
||||||
|
symbol=state.symbol,
|
||||||
|
status=state.status,
|
||||||
|
risk_percent=state.risk_percent,
|
||||||
|
)
|
||||||
|
|
||||||
|
# получить стратегию для текущего цикла
|
||||||
|
def _get_strategy(self) -> BaseStrategy:
|
||||||
|
state = self.get_state()
|
||||||
|
return StrategyRegistry.get(state.strategy)
|
||||||
|
|
||||||
# выполнить один цикл анализа рынка
|
# выполнить один цикл анализа рынка
|
||||||
def run_cycle(self) -> AutoTradeState:
|
def run_cycle(self) -> AutoTradeState:
|
||||||
state = self.get_state()
|
state = self.get_state()
|
||||||
@@ -122,7 +138,11 @@ class AutoTradeService:
|
|||||||
if state.status == "OFF":
|
if state.status == "OFF":
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
strategy = self._get_strategy()
|
||||||
|
context = self._build_strategy_context()
|
||||||
|
result = strategy.analyze(context)
|
||||||
|
|
||||||
state.last_check_at = datetime.now().strftime("%H:%M:%S")
|
state.last_check_at = datetime.now().strftime("%H:%M:%S")
|
||||||
state.last_signal = random.choice(["BUY", "SELL", "HOLD"])
|
state.last_signal = result.signal.value
|
||||||
|
|
||||||
return state
|
return state
|
||||||
1
app/src/trading/journal/__init__.py
Normal file
1
app/src/trading/journal/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"""Package marker."""
|
||||||
1
app/src/trading/strategies/__init__.py
Normal file
1
app/src/trading/strategies/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"""Package marker."""
|
||||||
29
app/src/trading/strategies/base.py
Normal file
29
app/src/trading/strategies/base.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# app/src/trading/strategies/base.py
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Protocol
|
||||||
|
|
||||||
|
from src.trading.strategies.signals import SignalResult
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(slots=True)
|
||||||
|
class StrategyContext:
|
||||||
|
# выбранный торговый инструмент
|
||||||
|
symbol: str
|
||||||
|
|
||||||
|
# текущий режим автоторговли: OBSERVING / RUNNING
|
||||||
|
status: str
|
||||||
|
|
||||||
|
# риск на сделку в процентах
|
||||||
|
risk_percent: float | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class BaseStrategy(Protocol):
|
||||||
|
# техническое имя стратегии
|
||||||
|
name: str
|
||||||
|
|
||||||
|
# выполнить анализ и вернуть торговый сигнал
|
||||||
|
def analyze(self, context: StrategyContext) -> SignalResult:
|
||||||
|
...
|
||||||
23
app/src/trading/strategies/hold.py
Normal file
23
app/src/trading/strategies/hold.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# app/src/trading/strategies/hold.py
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from src.trading.strategies.base import StrategyContext
|
||||||
|
from src.trading.strategies.signals import SignalResult, SignalType
|
||||||
|
|
||||||
|
|
||||||
|
class HoldStrategy:
|
||||||
|
name = "HOLD"
|
||||||
|
|
||||||
|
# безопасная стратегия по умолчанию: ничего не делает
|
||||||
|
def analyze(self, context: StrategyContext) -> SignalResult:
|
||||||
|
return SignalResult(
|
||||||
|
signal=SignalType.HOLD,
|
||||||
|
reason="Стратегия не выбрана. Используется безопасный HOLD.",
|
||||||
|
confidence=0.0,
|
||||||
|
payload={
|
||||||
|
"symbol": context.symbol,
|
||||||
|
"status": context.status,
|
||||||
|
"strategy": self.name,
|
||||||
|
},
|
||||||
|
)
|
||||||
30
app/src/trading/strategies/registry.py
Normal file
30
app/src/trading/strategies/registry.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# app/src/trading/strategies/registry.py
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from src.trading.strategies.base import BaseStrategy
|
||||||
|
from src.trading.strategies.hold import HoldStrategy
|
||||||
|
|
||||||
|
|
||||||
|
class StrategyRegistry:
|
||||||
|
# доступные стратегии
|
||||||
|
_strategies: dict[str, BaseStrategy] = {
|
||||||
|
"HOLD": HoldStrategy(),
|
||||||
|
"TREND": HoldStrategy(),
|
||||||
|
"GRID": HoldStrategy(),
|
||||||
|
"SCALP": HoldStrategy(),
|
||||||
|
}
|
||||||
|
|
||||||
|
# получить стратегию по имени
|
||||||
|
@classmethod
|
||||||
|
def get(cls, name: str | None) -> BaseStrategy:
|
||||||
|
if not name:
|
||||||
|
return cls._strategies["HOLD"]
|
||||||
|
|
||||||
|
normalized_name = name.strip().upper()
|
||||||
|
return cls._strategies.get(normalized_name, cls._strategies["HOLD"])
|
||||||
|
|
||||||
|
# получить список доступных стратегий
|
||||||
|
@classmethod
|
||||||
|
def names(cls) -> list[str]:
|
||||||
|
return sorted(cls._strategies.keys())
|
||||||
32
app/src/trading/strategies/signals.py
Normal file
32
app/src/trading/strategies/signals.py
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# app/src/trading/strategies/signals.py
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from enum import StrEnum
|
||||||
|
|
||||||
|
|
||||||
|
class SignalType(StrEnum):
|
||||||
|
# купить
|
||||||
|
BUY = "BUY"
|
||||||
|
|
||||||
|
# продать
|
||||||
|
SELL = "SELL"
|
||||||
|
|
||||||
|
# ничего не делать
|
||||||
|
HOLD = "HOLD"
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(slots=True)
|
||||||
|
class SignalResult:
|
||||||
|
# итоговый сигнал стратегии
|
||||||
|
signal: SignalType
|
||||||
|
|
||||||
|
# человекочитаемая причина сигнала
|
||||||
|
reason: str
|
||||||
|
|
||||||
|
# уверенность стратегии от 0.0 до 1.0
|
||||||
|
confidence: float = 0.0
|
||||||
|
|
||||||
|
# дополнительные данные стратегии для логов / отладки
|
||||||
|
payload: dict | None = None
|
||||||
@@ -1,122 +1,170 @@
|
|||||||
# Dzentra Bot — Master Roadmap
|
# Master Roadmap — Dzentra Bot
|
||||||
|
|
||||||
## Stage 01 — Bootstrap
|
## Цель проекта
|
||||||
✔ структура проекта
|
Создать Telegram-бота для:
|
||||||
✔ virtualenv
|
- ручной торговли;
|
||||||
✔ запуск приложения
|
- мониторинга рынка;
|
||||||
✔ базовый bootstrap
|
- автоторговли;
|
||||||
|
- аналитики;
|
||||||
|
- управления стратегиями.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Stage 02 — System layer
|
# Stage 01 — Bootstrap / Foundation
|
||||||
✔ экран ⚙️ Система
|
✔ app bootstrap
|
||||||
✔ базовая диагностика
|
✔ config layer
|
||||||
✔ структура компонентов
|
✔ logging
|
||||||
|
✔ router bootstrap
|
||||||
|
✔ DB bootstrap
|
||||||
|
|
||||||
|
✅ Статус: завершён
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Stage 03 — Exchange Integration
|
# Stage 02 — System / Diagnostics
|
||||||
|
✔ system screen
|
||||||
|
✔ exchange health
|
||||||
|
✔ DB health
|
||||||
|
✔ runtime info
|
||||||
|
✔ error rendering
|
||||||
|
|
||||||
### 03.1
|
✅ Статус: завершён
|
||||||
✔ mock exchange
|
|
||||||
|
|
||||||
### 03.2
|
---
|
||||||
✔ время / timestamp
|
|
||||||
|
|
||||||
### 03.3
|
# Stage 03 — Exchange Integration
|
||||||
|
✔ mock exchange
|
||||||
|
✔ time handling
|
||||||
✔ exchangeInfo
|
✔ exchangeInfo
|
||||||
✔ валидация символа
|
✔ private auth
|
||||||
|
✔ account + portfolio
|
||||||
|
✔ market live polling
|
||||||
|
⚠ websocket research / fallback polling
|
||||||
|
|
||||||
### 03.4
|
✅ Статус: завершён (fallback mode)
|
||||||
✔ private auth (HMAC, headers, timestamp)
|
|
||||||
|
|
||||||
### 03.5
|
|
||||||
✔ первый private endpoint (account)
|
|
||||||
✔ баланс
|
|
||||||
✔ экран 💼 Портфель
|
|
||||||
✔ UX улучшения
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Stage 04 — Storage / Journal (NEXT)
|
# Stage 04 — Storage / Journal
|
||||||
|
✔ storage foundation
|
||||||
|
✔ event log
|
||||||
|
✔ repositories
|
||||||
|
✔ UI integration
|
||||||
|
✔ journal management
|
||||||
|
|
||||||
### 04.1
|
✅ Статус: завершён
|
||||||
⏳ storage foundation
|
|
||||||
|
|
||||||
### 04.2
|
|
||||||
⏳ journal / event log
|
|
||||||
|
|
||||||
### 04.3
|
|
||||||
⏳ repositories
|
|
||||||
|
|
||||||
### 04.4
|
|
||||||
⏳ UI integration
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Stage 03.6 — Orders (после storage)
|
# Stage 05 — Trading UI / Draft / Validation
|
||||||
⏳ orders skeleton
|
✔ order draft flow
|
||||||
⏳ dry-run режим
|
✔ interactive builder
|
||||||
⏳ валидация ордеров
|
✔ validation
|
||||||
|
✔ runtime mode helpers
|
||||||
|
✔ UI unification
|
||||||
|
✔ quantity normalization
|
||||||
|
|
||||||
|
✅ Статус: завершён
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Stage 05 — Trading logic
|
# Stage 06 — Journal / Navigation / Settings
|
||||||
⏳ стратегии
|
✔ journal UI
|
||||||
⏳ риск-менеджмент
|
✔ navigation improvements
|
||||||
⏳ сигналы
|
✔ settings screen
|
||||||
|
✔ system info
|
||||||
|
|
||||||
|
✅ Статус: завершён
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Stage 06 — UI / Journal / Navigation
|
# Stage 07 — Auto Trading
|
||||||
|
|
||||||
### 06.1
|
## 07.1 — Skeleton UI
|
||||||
✔ journal management UI
|
✔ экран автоторговли
|
||||||
✔ export CSV/XLSX
|
✔ state machine
|
||||||
✔ system navigation redesign
|
|
||||||
|
|
||||||
### 06.2
|
## 07.2 — Real settings
|
||||||
✔ system settings navigation
|
✔ стратегия
|
||||||
✔ product information screen
|
✔ риск
|
||||||
✔ settings stubs
|
✔ символ
|
||||||
|
|
||||||
### 06.3
|
## 07.3 — Analysis Cycle
|
||||||
⏳ retention / limits
|
✔ run_cycle()
|
||||||
|
✔ mock signals
|
||||||
|
✔ live updates
|
||||||
|
|
||||||
|
### 07.3.1 — Background Runner
|
||||||
|
✔ asyncio loop
|
||||||
|
|
||||||
|
### 07.3.2 — Live Screens
|
||||||
|
✔ market
|
||||||
|
✔ portfolio
|
||||||
|
✔ journal
|
||||||
|
|
||||||
|
### 07.3.3 — Multi Live
|
||||||
|
✔ multi-screen
|
||||||
|
✔ duplicate protection
|
||||||
|
|
||||||
|
### 07.3.4 — Monitoring redesign
|
||||||
|
✔ новый экран мониторинга
|
||||||
|
|
||||||
|
### 07.3.5 — WebSocket probe
|
||||||
|
✔ ws skeleton
|
||||||
|
⚠ fallback REST polling
|
||||||
|
|
||||||
|
## 07.4 — Strategy Plugin Architecture
|
||||||
|
|
||||||
|
### 07.4.1
|
||||||
|
✔ BaseStrategy
|
||||||
|
✔ SignalResult
|
||||||
|
|
||||||
|
### 07.4.2
|
||||||
|
✔ Strategy Registry
|
||||||
|
|
||||||
|
### 07.4.3
|
||||||
|
⏳ Trend Strategy
|
||||||
|
|
||||||
|
### 07.4.4
|
||||||
|
⏳ Grid Strategy
|
||||||
|
|
||||||
|
### 07.4.5
|
||||||
|
⏳ Scalping Strategy
|
||||||
|
|
||||||
|
### 07.3.6 — Signal Engine
|
||||||
|
⏳ реальные сигналы
|
||||||
|
|
||||||
|
### 07.3.7 — Execution Engine
|
||||||
|
⏳ исполнение ордеров
|
||||||
|
|
||||||
|
### 07.3.8 — Analytics
|
||||||
|
⏳ статистика торговли
|
||||||
|
|
||||||
|
🟡 Статус: в работе
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Stage 07 — Auto Trading
|
# Stage 08 — Analytics / Reports
|
||||||
|
⏳ отчёты
|
||||||
|
⏳ pnl
|
||||||
|
⏳ winrate
|
||||||
|
⏳ drawdown
|
||||||
|
|
||||||
### 07.1
|
⚪ Статус: не начат
|
||||||
✔ auto trading skeleton UI
|
|
||||||
✔ state machine
|
|
||||||
✔ mock controls
|
|
||||||
|
|
||||||
### 07.2
|
|
||||||
✔ real settings
|
|
||||||
✔ strategy presets
|
|
||||||
✔ risk presets
|
|
||||||
|
|
||||||
### 07.3
|
|
||||||
✔ analysis cycle skeleton
|
|
||||||
✔ mock signals
|
|
||||||
✔ UI integration
|
|
||||||
|
|
||||||
07.3.1 auto live
|
|
||||||
07.3.2 live market/portfolio
|
|
||||||
07.3.3 multi live + ui optimization
|
|
||||||
07.3.4 menu redesign
|
|
||||||
07.3.5 websocket
|
|
||||||
07.3.6 signal engine
|
|
||||||
07.3.7 execution
|
|
||||||
07.3.8 analytics
|
|
||||||
|
|
||||||
### 07.4
|
|
||||||
⏳ strategy plugin architecture
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Текущий статус
|
# Stage 09 — Production Readiness
|
||||||
|
⏳ deployment
|
||||||
|
⏳ monitoring
|
||||||
|
⏳ alerts
|
||||||
|
⏳ backups
|
||||||
|
|
||||||
👉 Stage 03.5 — завершён
|
⚪ Статус: не начат
|
||||||
👉 Следующий шаг: Stage 04.1
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Текущий статус проекта
|
||||||
|
|
||||||
|
👉 Завершён: 07.4.1
|
||||||
|
👉 Следующий шаг: 07.4.2 Strategy Registry
|
||||||
66
docs/roadmap/stage-01-bootstrap-foundation-roadmap.md
Normal file
66
docs/roadmap/stage-01-bootstrap-foundation-roadmap.md
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
# Stage 01 — Bootstrap / Foundation Roadmap
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Создать базовый каркас приложения:
|
||||||
|
- запуск бота;
|
||||||
|
- конфигурация;
|
||||||
|
- логирование;
|
||||||
|
- bootstrap архитектура.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01.1 — App bootstrap
|
||||||
|
✔ структура проекта
|
||||||
|
✔ main.py
|
||||||
|
✔ app_factory.py
|
||||||
|
✔ create_app()
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ приложение запускается через единую точку входа
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01.2 — Config layer
|
||||||
|
✔ .env подключение
|
||||||
|
✔ dataclass Settings
|
||||||
|
✔ load_settings()
|
||||||
|
✔ bool/int parsers
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ централизованная конфигурация
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01.3 — Logging
|
||||||
|
✔ setup_logging()
|
||||||
|
✔ уровни логов
|
||||||
|
✔ startup logs
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ логирование запуска и ошибок
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01.4 — Router bootstrap
|
||||||
|
✔ Dispatcher init
|
||||||
|
✔ setup_routers()
|
||||||
|
✔ подключение handlers
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ Telegram handlers подключаются централизованно
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01.5 — DB bootstrap
|
||||||
|
✔ init_schema()
|
||||||
|
✔ проверка запуска БД
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ база подготавливается при старте
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Текущий статус
|
||||||
|
|
||||||
|
👉 Stage 01 завершён
|
||||||
|
👉 Следующий шаг: Stage 02
|
||||||
62
docs/roadmap/stage-02-system-diagnostics-roadmap.md
Normal file
62
docs/roadmap/stage-02-system-diagnostics-roadmap.md
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# Stage 02 — System / Diagnostics Roadmap
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Добавить системный слой:
|
||||||
|
- статус приложения;
|
||||||
|
- health checks;
|
||||||
|
- diagnostics UI.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 02.1 — System screen
|
||||||
|
✔ экран ⚙️ Система
|
||||||
|
✔ базовая навигация
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ доступ к системной информации
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 02.2 — Exchange health
|
||||||
|
✔ public API health
|
||||||
|
✔ private API health
|
||||||
|
✔ status rendering
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ диагностика подключения к бирже
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 02.3 — DB health
|
||||||
|
✔ проверка БД
|
||||||
|
✔ вывод статуса
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ диагностика базы данных
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 02.4 — Runtime info
|
||||||
|
✔ env
|
||||||
|
✔ mode
|
||||||
|
✔ symbol
|
||||||
|
✔ exchange name
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ отображение runtime параметров
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 02.5 — Error rendering
|
||||||
|
✔ единый UI ошибок
|
||||||
|
✔ retry actions
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ пользователь видит понятные ошибки
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Текущий статус
|
||||||
|
|
||||||
|
👉 Stage 02 завершён
|
||||||
|
👉 Следующий шаг: Stage 03
|
||||||
@@ -4,7 +4,8 @@
|
|||||||
Интеграция с биржей:
|
Интеграция с биржей:
|
||||||
- public API
|
- public API
|
||||||
- private API
|
- private API
|
||||||
- базовый UI
|
- WebSocket / fallback polling
|
||||||
|
- UI мониторинга
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -12,12 +13,18 @@
|
|||||||
✔ имитация данных
|
✔ имитация данных
|
||||||
✔ структура клиента
|
✔ структура клиента
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ бот может работать без реальной биржи
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 03.2 — Time handling
|
## 03.2 — Time handling
|
||||||
✔ обработка timestamp
|
✔ обработка timestamp
|
||||||
✔ локализация времени
|
✔ локализация времени
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ корректное локальное время
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 03.3 — exchangeInfo
|
## 03.3 — exchangeInfo
|
||||||
@@ -25,6 +32,9 @@
|
|||||||
✔ валидация символа
|
✔ валидация символа
|
||||||
✔ защита от ошибок API
|
✔ защита от ошибок API
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ бот знает доступные инструменты
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 03.4 — Private auth
|
## 03.4 — Private auth
|
||||||
@@ -34,6 +44,9 @@
|
|||||||
✔ headers
|
✔ headers
|
||||||
✔ timestamp
|
✔ timestamp
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ доступ к private API
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 03.5 — Account + Portfolio
|
## 03.5 — Account + Portfolio
|
||||||
@@ -48,28 +61,34 @@
|
|||||||
✔ скрытие нулевых балансов
|
✔ скрытие нулевых балансов
|
||||||
✔ группировка активов
|
✔ группировка активов
|
||||||
|
|
||||||
---
|
### Результат
|
||||||
|
✔ баланс отображается
|
||||||
## Результат Stage 03
|
|
||||||
|
|
||||||
✔ бот умеет:
|
|
||||||
- получать цену
|
|
||||||
- валидировать символ
|
|
||||||
- работать с private API
|
|
||||||
- получать баланс
|
|
||||||
- отображать портфель
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Ограничения
|
## 03.6 — Orders
|
||||||
|
⏳ orders skeleton
|
||||||
- нет ордеров
|
⏳ dry-run режим
|
||||||
- нет хранения
|
⏳ валидация ордеров
|
||||||
- нет журнала
|
|
||||||
- нет стратегии
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Следующий шаг
|
## 03.7 — Market live
|
||||||
|
✔ live экран 📈 Рынок
|
||||||
|
✔ polling обновление
|
||||||
|
✔ multi-screen support
|
||||||
|
|
||||||
➡ Stage 04 — Storage / Journal
|
---
|
||||||
|
|
||||||
|
## 03.8 — WebSocket
|
||||||
|
⚠️ исследование API Dzengi
|
||||||
|
⚠️ найден websocket swagger
|
||||||
|
⚠️ endpoint не подтверждён
|
||||||
|
✔ fallback на REST polling
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Текущий статус
|
||||||
|
|
||||||
|
👉 Завершён: 03.8 (fallback mode)
|
||||||
|
👉 Следующий шаг: 03.6 Orders
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
# Stage 04 — Storage / Journal Roadmap
|
|
||||||
|
|
||||||
## Цель
|
|
||||||
Добавить слой хранения и журналирования.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 04.1 — Storage foundation
|
|
||||||
|
|
||||||
Цель:
|
|
||||||
- подключить БД
|
|
||||||
- создать базовые модели
|
|
||||||
|
|
||||||
Что добавить:
|
|
||||||
- storage/session.py
|
|
||||||
- storage/schema.py
|
|
||||||
- SQLite
|
|
||||||
|
|
||||||
Сущности:
|
|
||||||
- BalanceSnapshot
|
|
||||||
- JournalEvent
|
|
||||||
- OrderDraft
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 04.2 — Journal / event log
|
|
||||||
|
|
||||||
Цель:
|
|
||||||
- логировать действия бота
|
|
||||||
|
|
||||||
Что логировать:
|
|
||||||
- ошибки API
|
|
||||||
- запросы
|
|
||||||
- события системы
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 04.3 — Repositories
|
|
||||||
|
|
||||||
Цель:
|
|
||||||
- хранить данные
|
|
||||||
|
|
||||||
Добавить:
|
|
||||||
- repository balance
|
|
||||||
- repository orders
|
|
||||||
- repository journal
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 04.4 — UI integration
|
|
||||||
|
|
||||||
Цель:
|
|
||||||
- показать storage в интерфейсе
|
|
||||||
|
|
||||||
Добавить:
|
|
||||||
- статус БД в ⚙️ Система
|
|
||||||
- последние события
|
|
||||||
- snapshot баланса
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Результат Stage 04
|
|
||||||
|
|
||||||
✔ данные сохраняются
|
|
||||||
✔ есть история
|
|
||||||
✔ есть журнал
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Следующий шаг
|
|
||||||
|
|
||||||
➡ Stage 03.6 — Orders skeleton
|
|
||||||
47
docs/roadmap/stage-04-storage-journal-roadmap.md
Normal file
47
docs/roadmap/stage-04-storage-journal-roadmap.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Stage 04 — Storage / Journal Roadmap
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Добавить слой хранения и журналирования.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04.1 — Storage foundation
|
||||||
|
✔ подключение БД
|
||||||
|
✔ schema init
|
||||||
|
✔ базовые модели
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04.2 — Journal / event log
|
||||||
|
✔ логирование действий бота
|
||||||
|
✔ ошибки API
|
||||||
|
✔ системные события
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04.3 — Repositories
|
||||||
|
✔ repository balance
|
||||||
|
✔ repository orders
|
||||||
|
✔ repository journal
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04.4 — UI integration
|
||||||
|
✔ статус БД в ⚙️ Система
|
||||||
|
✔ последние события
|
||||||
|
✔ snapshot баланса
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04.5 — Journal management
|
||||||
|
✔ экран 📒 Журнал
|
||||||
|
✔ пагинация
|
||||||
|
✔ очистка
|
||||||
|
✔ экспорт CSV/XLSX
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Текущий статус
|
||||||
|
|
||||||
|
👉 Stage 04 завершён
|
||||||
|
👉 Следующий шаг: Stage 05
|
||||||
96
docs/roadmap/stage-05-trading-ui-draft-validation-roadmap.md
Normal file
96
docs/roadmap/stage-05-trading-ui-draft-validation-roadmap.md
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
# Stage 05 — Trading UI / Draft / Validation Roadmap
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Реализовать торговый UI:
|
||||||
|
- draft orders;
|
||||||
|
- validation;
|
||||||
|
- runtime modes;
|
||||||
|
- unified trading UX.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 05.1 — Order Draft Flow
|
||||||
|
✔ создание draft order
|
||||||
|
✔ preview before execution
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ ордер проходит через черновик
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 05.2 — Interactive Draft Builder
|
||||||
|
✔ интерактивное редактирование
|
||||||
|
✔ изменение параметров
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ пользователь может собрать ордер пошагово
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 05.3 — Order Validation
|
||||||
|
✔ валидация symbol
|
||||||
|
✔ валидация qty
|
||||||
|
✔ валидация price
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ защита от некорректных ордеров
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 05.4 — Runtime Mode Helpers
|
||||||
|
✔ demo helpers
|
||||||
|
✔ prod helpers
|
||||||
|
✔ mode labels
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ разделение DEMO / PROD
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 05.5 — Trade UI Unification
|
||||||
|
✔ унификация экранов торговли
|
||||||
|
✔ единый стиль
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ консистентный UX
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 05.6 — Draft Logic Improvements
|
||||||
|
✔ улучшение бизнес-логики draft
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ меньше ошибок при подготовке ордера
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 05.7 — Draft UI Restructuring
|
||||||
|
✔ переработка UI черновика
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ более удобный экран
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 05.8 — Quantity Normalization
|
||||||
|
✔ округление qty
|
||||||
|
✔ step_size support
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ корректный объём ордера
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 05.9 — Trading UI Milestone
|
||||||
|
✔ milestone фиксация
|
||||||
|
✔ стабилизация интерфейса
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ Stage 05 завершён
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Текущий статус
|
||||||
|
|
||||||
|
👉 Stage 05 завершён
|
||||||
|
👉 Следующий шаг: Stage 06
|
||||||
49
docs/roadmap/stage-06-journal-navigation-settings-roadmap.md
Normal file
49
docs/roadmap/stage-06-journal-navigation-settings-roadmap.md
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# Stage 06 — Journal / Navigation / Settings Roadmap
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Добавить журналирование и системную навигацию.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 06.1 — Journal UI
|
||||||
|
✔ экран 📒 Журнал
|
||||||
|
✔ пагинация
|
||||||
|
✔ export CSV/XLSX
|
||||||
|
✔ очистка журнала
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ управление журналом через UI
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 06.2 — Navigation improvements
|
||||||
|
✔ переходы между экранами
|
||||||
|
✔ system navigation
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ улучшенная навигация
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 06.3 — System Settings
|
||||||
|
✔ экран настроек
|
||||||
|
✔ runtime параметры
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ просмотр текущих настроек
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 06.4 — System Info
|
||||||
|
✔ информация о системе
|
||||||
|
✔ environment info
|
||||||
|
|
||||||
|
### Результат
|
||||||
|
✔ диагностика приложения
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Текущий статус
|
||||||
|
|
||||||
|
👉 Stage 06 завершён
|
||||||
|
👉 Следующий шаг: Stage 07
|
||||||
103
docs/roadmap/stage-07-auto-trading-roadmap.md
Normal file
103
docs/roadmap/stage-07-auto-trading-roadmap.md
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
# Stage 07 — Auto Trading Roadmap
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Добавить автоторговлю.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.1 — Skeleton UI
|
||||||
|
✔ экран автоторговли
|
||||||
|
✔ state machine
|
||||||
|
✔ mock controls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.2 — Real settings
|
||||||
|
✔ стратегия
|
||||||
|
✔ риск
|
||||||
|
✔ символ
|
||||||
|
✔ presets UI
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.3 — Analysis Cycle Skeleton
|
||||||
|
✔ run_cycle()
|
||||||
|
✔ last_check_at
|
||||||
|
✔ last_signal
|
||||||
|
✔ mock signals
|
||||||
|
✔ UI integration
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.3.1 — Background Runner
|
||||||
|
✔ asyncio runner
|
||||||
|
✔ auto-refresh screen
|
||||||
|
✔ active screen guard
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.3.2 — Live Screens
|
||||||
|
✔ live market
|
||||||
|
✔ live portfolio
|
||||||
|
✔ live journal
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.3.3 — Multi Live
|
||||||
|
✔ multi-screen update
|
||||||
|
✔ duplicate protection
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.3.4 — Menu redesign
|
||||||
|
✔ новый экран Мониторинг
|
||||||
|
✔ переработанная навигация
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.3.5 — WebSocket probe
|
||||||
|
✔ websocket client skeleton
|
||||||
|
✔ reconnect logs
|
||||||
|
✔ fallback REST polling
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.3.6 — Signal Engine
|
||||||
|
⏳ реальные сигналы
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.3.7 — Execution Engine
|
||||||
|
⏳ исполнение ордеров
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.3.8 — Analytics
|
||||||
|
⏳ статистика торговли
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 07.4 — Архитектура стратегий
|
||||||
|
|
||||||
|
### 07.4.1
|
||||||
|
✔ BaseStrategy
|
||||||
|
✔ SignalResult
|
||||||
|
|
||||||
|
### 07.4.2
|
||||||
|
✔ registry стратегий
|
||||||
|
|
||||||
|
### 07.4.3
|
||||||
|
⏳ Trend strategy
|
||||||
|
|
||||||
|
### 07.4.4
|
||||||
|
⏳ Grid strategy
|
||||||
|
|
||||||
|
### 07.4.5
|
||||||
|
⏳ Scalping strategy
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Текущий статус
|
||||||
|
|
||||||
|
👉 Завершён: 07.4.1
|
||||||
|
👉 Следующий шаг: 07.4.2
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
# Stage 07 — Auto Trading Roadmap
|
|
||||||
|
|
||||||
## Цель
|
|
||||||
|
|
||||||
Добавить автоторговлю.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 07.1 — Skeleton UI
|
|
||||||
|
|
||||||
✔ экран автоторговли
|
|
||||||
✔ state machine
|
|
||||||
✔ mock controls
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 07.2 — Real settings
|
|
||||||
|
|
||||||
✔ стратегия
|
|
||||||
✔ риск
|
|
||||||
✔ символ
|
|
||||||
✔ presets UI
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 07.3 — Analysis Cycle Skeleton
|
|
||||||
|
|
||||||
✔ run_cycle()
|
|
||||||
✔ last_check_at
|
|
||||||
✔ last_signal
|
|
||||||
✔ mock signals
|
|
||||||
✔ UI integration
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 07.3.1 — Background Runner
|
|
||||||
|
|
||||||
✔ asyncio runner
|
|
||||||
✔ auto-refresh screen
|
|
||||||
✔ single live auto screen
|
|
||||||
✔ active screen guard
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 07.3.2 — Live Screens
|
|
||||||
|
|
||||||
⏳ live market screen
|
|
||||||
⏳ live portfolio screen
|
|
||||||
⏳ live journal screen
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 07.4 — Strategy plugins
|
|
||||||
|
|
||||||
⏳ plugin architecture
|
|
||||||
⏳ strategy registry
|
|
||||||
⏳ signal execution
|
|
||||||
122
docs/stages/stage-07_4_1-base_strategy.md
Normal file
122
docs/stages/stage-07_4_1-base_strategy.md
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
# 07.4.1 — BaseStrategy + SignalResult
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
|
||||||
|
Создать базовую архитектуру стратегий:
|
||||||
|
|
||||||
|
- единый контракт для стратегий;
|
||||||
|
- стандартизированный результат сигнала;
|
||||||
|
- подготовка к расширяемой системе автоторговли.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Проблема
|
||||||
|
|
||||||
|
До этого:
|
||||||
|
|
||||||
|
- логика сигналов была захардкожена;
|
||||||
|
- отсутствовала структура стратегий;
|
||||||
|
- невозможно масштабировать и добавлять новые алгоритмы.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Введены базовые сущности:
|
||||||
|
|
||||||
|
StrategyContext → Strategy → SignalResult
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Архитектура
|
||||||
|
|
||||||
|
### StrategyContext
|
||||||
|
|
||||||
|
Контекст выполнения стратегии:
|
||||||
|
|
||||||
|
- symbol — инструмент
|
||||||
|
- status — режим (RUNNING / OBSERVING)
|
||||||
|
- risk_percent — риск
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### BaseStrategy (Protocol)
|
||||||
|
|
||||||
|
Контракт стратегии:
|
||||||
|
|
||||||
|
analyze(context) → SignalResult
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### SignalType
|
||||||
|
|
||||||
|
Типы сигналов:
|
||||||
|
|
||||||
|
- BUY
|
||||||
|
- SELL
|
||||||
|
- HOLD
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### SignalResult
|
||||||
|
|
||||||
|
Результат анализа:
|
||||||
|
|
||||||
|
- signal — итоговый сигнал
|
||||||
|
- reason — причина
|
||||||
|
- confidence — уверенность
|
||||||
|
- payload — доп. данные
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### HoldStrategy
|
||||||
|
|
||||||
|
Базовая безопасная стратегия:
|
||||||
|
|
||||||
|
- всегда возвращает HOLD;
|
||||||
|
- используется как default;
|
||||||
|
- предотвращает случайные сделки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Интеграция
|
||||||
|
|
||||||
|
Добавлено в AutoTradeService:
|
||||||
|
|
||||||
|
- _build_strategy_context()
|
||||||
|
- _get_strategy()
|
||||||
|
- использование strategy.analyze()
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Поведение
|
||||||
|
|
||||||
|
Теперь:
|
||||||
|
|
||||||
|
- каждый цикл вызывает стратегию;
|
||||||
|
- результат записывается в state:
|
||||||
|
- last_signal
|
||||||
|
- last_check_at
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ограничения
|
||||||
|
|
||||||
|
- только HOLD стратегия
|
||||||
|
- нет логирования
|
||||||
|
- нет execution
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Следующий шаг
|
||||||
|
|
||||||
|
07.4.2 — Strategy Registry
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Итог
|
||||||
|
|
||||||
|
✔ введён BaseStrategy
|
||||||
|
✔ введён SignalResult
|
||||||
|
✔ реализован HoldStrategy
|
||||||
|
✔ интеграция с AutoTradeService
|
||||||
102
docs/stages/stage-07_4_2-strategy_registry.md
Normal file
102
docs/stages/stage-07_4_2-strategy_registry.md
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
# 07.4.2 — Strategy Registry
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
|
||||||
|
Создать централизованный реестр стратегий:
|
||||||
|
|
||||||
|
- управление стратегиями;
|
||||||
|
- динамический выбор;
|
||||||
|
- подготовка plug-in архитектуры.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Проблема
|
||||||
|
|
||||||
|
После 07.4.1:
|
||||||
|
|
||||||
|
- стратегия захардкожена;
|
||||||
|
- нет переключения;
|
||||||
|
- нет масштабируемости.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Добавлен StrategyRegistry:
|
||||||
|
|
||||||
|
AutoTradeService → StrategyRegistry → Strategy
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Архитектура
|
||||||
|
|
||||||
|
### StrategyRegistry
|
||||||
|
|
||||||
|
Хранилище стратегий:
|
||||||
|
|
||||||
|
- HOLD
|
||||||
|
- TREND
|
||||||
|
- GRID
|
||||||
|
- SCALP
|
||||||
|
|
||||||
|
(пока все = HoldStrategy)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Методы
|
||||||
|
|
||||||
|
get(name):
|
||||||
|
|
||||||
|
- нормализация имени
|
||||||
|
- возврат стратегии
|
||||||
|
- fallback → HOLD
|
||||||
|
|
||||||
|
names():
|
||||||
|
|
||||||
|
- список доступных стратегий
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Интеграция
|
||||||
|
|
||||||
|
AutoTradeService:
|
||||||
|
|
||||||
|
_get_strategy() → StrategyRegistry.get()
|
||||||
|
|
||||||
|
run_cycle:
|
||||||
|
|
||||||
|
→ strategy.analyze()
|
||||||
|
→ state.last_signal
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Поведение
|
||||||
|
|
||||||
|
Теперь:
|
||||||
|
|
||||||
|
- стратегия выбирается через state.strategy
|
||||||
|
- fallback при ошибках
|
||||||
|
- все стратегии пока безопасные
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ограничения
|
||||||
|
|
||||||
|
- нет реальных стратегий
|
||||||
|
- нет логирования
|
||||||
|
- нет execution
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Следующий шаг
|
||||||
|
|
||||||
|
07.4.3 — Trend Strategy
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Итог
|
||||||
|
|
||||||
|
✔ добавлен StrategyRegistry
|
||||||
|
✔ реализован fallback
|
||||||
|
✔ интеграция с AutoTradeService
|
||||||
|
✔ подготовка plug-in архитектуры
|
||||||
Reference in New Issue
Block a user