From dce68d79046b8615a203f2b42d97e5894bdc6be9 Mon Sep 17 00:00:00 2001 From: Sergey Date: Wed, 29 Apr 2026 23:26:46 +0300 Subject: [PATCH] docs: unify roadmap structure and sync all stages --- app/src/trading/auto/service.py | 22 +- app/src/trading/strategies/base.py | 45 ++++ app/src/trading/strategies/signals.py | 32 +++ docs/roadmap/master-roadmap.md | 220 +++++++++++------- .../stage-01-bootstrap-foundation-roadmap.md | 66 ++++++ .../stage-02-system-diagnostics-roadmap.md | 62 +++++ ... stage-03-exchange-integration-roadmap.md} | 57 +++-- docs/roadmap/stage-04-roadmap.md | 72 ------ .../stage-04-storage-journal-roadmap.md | 47 ++++ ...-05-trading-ui-draft-validation-roadmap.md | 96 ++++++++ ...-06-journal-navigation-settings-roadmap.md | 49 ++++ docs/roadmap/stage-07-auto-trading-roadmap.md | 103 ++++++++ docs/roadmap/stage-07-roadmap.md | 57 ----- 13 files changed, 692 insertions(+), 236 deletions(-) create mode 100644 app/src/trading/strategies/base.py create mode 100644 app/src/trading/strategies/signals.py create mode 100644 docs/roadmap/stage-01-bootstrap-foundation-roadmap.md create mode 100644 docs/roadmap/stage-02-system-diagnostics-roadmap.md rename docs/roadmap/{stage-03-roadmap.md => stage-03-exchange-integration-roadmap.md} (50%) delete mode 100644 docs/roadmap/stage-04-roadmap.md create mode 100644 docs/roadmap/stage-04-storage-journal-roadmap.md create mode 100644 docs/roadmap/stage-05-trading-ui-draft-validation-roadmap.md create mode 100644 docs/roadmap/stage-06-journal-navigation-settings-roadmap.md create mode 100644 docs/roadmap/stage-07-auto-trading-roadmap.md delete mode 100644 docs/roadmap/stage-07-roadmap.md diff --git a/app/src/trading/auto/service.py b/app/src/trading/auto/service.py index 7af26f5..062f914 100644 --- a/app/src/trading/auto/service.py +++ b/app/src/trading/auto/service.py @@ -3,11 +3,11 @@ from __future__ import annotations import asyncio -import random from datetime import datetime from src.core.config import load_settings from src.trading.auto.state import AutoTradeState +from src.trading.strategies.base import HoldStrategy, StrategyContext class AutoTradeService: @@ -115,6 +115,20 @@ class AutoTradeService: state.risk_percent = risk_percent 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) -> HoldStrategy: + return HoldStrategy() + # выполнить один цикл анализа рынка def run_cycle(self) -> AutoTradeState: state = self.get_state() @@ -122,7 +136,11 @@ class AutoTradeService: if state.status == "OFF": 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_signal = random.choice(["BUY", "SELL", "HOLD"]) + state.last_signal = result.signal.value return state \ No newline at end of file diff --git a/app/src/trading/strategies/base.py b/app/src/trading/strategies/base.py new file mode 100644 index 0000000..9e38a63 --- /dev/null +++ b/app/src/trading/strategies/base.py @@ -0,0 +1,45 @@ +# 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, SignalType + + +@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: + ... + + +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, + }, + ) \ No newline at end of file diff --git a/app/src/trading/strategies/signals.py b/app/src/trading/strategies/signals.py new file mode 100644 index 0000000..b89af3c --- /dev/null +++ b/app/src/trading/strategies/signals.py @@ -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 \ No newline at end of file diff --git a/docs/roadmap/master-roadmap.md b/docs/roadmap/master-roadmap.md index dd1a53f..a33301f 100644 --- a/docs/roadmap/master-roadmap.md +++ b/docs/roadmap/master-roadmap.md @@ -1,122 +1,170 @@ -# Dzentra Bot — Master Roadmap +# Master Roadmap — Dzentra Bot -## Stage 01 — Bootstrap -✔ структура проекта -✔ virtualenv -✔ запуск приложения -✔ базовый bootstrap +## Цель проекта +Создать Telegram-бота для: +- ручной торговли; +- мониторинга рынка; +- автоторговли; +- аналитики; +- управления стратегиями. --- -## 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 -✔ валидация символа +✔ private auth +✔ account + portfolio +✔ market live polling +⚠ websocket research / fallback polling -### 03.4 -✔ private auth (HMAC, headers, timestamp) - -### 03.5 -✔ первый private endpoint (account) -✔ баланс -✔ экран 💼 Портфель -✔ UX улучшения +✅ Статус: завершён (fallback mode) --- -## 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) -⏳ orders skeleton -⏳ dry-run режим -⏳ валидация ордеров +# Stage 05 — Trading UI / Draft / Validation +✔ order draft flow +✔ 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 -✔ journal management UI -✔ export CSV/XLSX -✔ system navigation redesign +## 07.1 — Skeleton UI +✔ экран автоторговли +✔ state machine -### 06.2 -✔ system settings navigation -✔ product information screen -✔ settings stubs +## 07.2 — Real settings +✔ стратегия +✔ риск +✔ символ -### 06.3 -⏳ retention / limits +## 07.3 — Analysis Cycle +✔ 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 \ No newline at end of file +⚪ Статус: не начат + +--- + +## Текущий статус проекта + +👉 Завершён: 07.4.1 +👉 Следующий шаг: 07.4.2 Strategy Registry \ No newline at end of file diff --git a/docs/roadmap/stage-01-bootstrap-foundation-roadmap.md b/docs/roadmap/stage-01-bootstrap-foundation-roadmap.md new file mode 100644 index 0000000..6335a72 --- /dev/null +++ b/docs/roadmap/stage-01-bootstrap-foundation-roadmap.md @@ -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 \ No newline at end of file diff --git a/docs/roadmap/stage-02-system-diagnostics-roadmap.md b/docs/roadmap/stage-02-system-diagnostics-roadmap.md new file mode 100644 index 0000000..a06c60c --- /dev/null +++ b/docs/roadmap/stage-02-system-diagnostics-roadmap.md @@ -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 \ No newline at end of file diff --git a/docs/roadmap/stage-03-roadmap.md b/docs/roadmap/stage-03-exchange-integration-roadmap.md similarity index 50% rename from docs/roadmap/stage-03-roadmap.md rename to docs/roadmap/stage-03-exchange-integration-roadmap.md index ea7d678..d0f8823 100644 --- a/docs/roadmap/stage-03-roadmap.md +++ b/docs/roadmap/stage-03-exchange-integration-roadmap.md @@ -4,7 +4,8 @@ Интеграция с биржей: - public API - private API -- базовый UI +- WebSocket / fallback polling +- UI мониторинга --- @@ -12,12 +13,18 @@ ✔ имитация данных ✔ структура клиента +### Результат +✔ бот может работать без реальной биржи + --- ## 03.2 — Time handling ✔ обработка timestamp ✔ локализация времени +### Результат +✔ корректное локальное время + --- ## 03.3 — exchangeInfo @@ -25,6 +32,9 @@ ✔ валидация символа ✔ защита от ошибок API +### Результат +✔ бот знает доступные инструменты + --- ## 03.4 — Private auth @@ -34,6 +44,9 @@ ✔ headers ✔ timestamp +### Результат +✔ доступ к private API + --- ## 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 \ No newline at end of file +--- + +## 03.8 — WebSocket +⚠️ исследование API Dzengi +⚠️ найден websocket swagger +⚠️ endpoint не подтверждён +✔ fallback на REST polling + +--- + +## Текущий статус + +👉 Завершён: 03.8 (fallback mode) +👉 Следующий шаг: 03.6 Orders \ No newline at end of file diff --git a/docs/roadmap/stage-04-roadmap.md b/docs/roadmap/stage-04-roadmap.md deleted file mode 100644 index e8717a3..0000000 --- a/docs/roadmap/stage-04-roadmap.md +++ /dev/null @@ -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 \ No newline at end of file diff --git a/docs/roadmap/stage-04-storage-journal-roadmap.md b/docs/roadmap/stage-04-storage-journal-roadmap.md new file mode 100644 index 0000000..b73c78b --- /dev/null +++ b/docs/roadmap/stage-04-storage-journal-roadmap.md @@ -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 \ No newline at end of file diff --git a/docs/roadmap/stage-05-trading-ui-draft-validation-roadmap.md b/docs/roadmap/stage-05-trading-ui-draft-validation-roadmap.md new file mode 100644 index 0000000..8aa5c93 --- /dev/null +++ b/docs/roadmap/stage-05-trading-ui-draft-validation-roadmap.md @@ -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 \ No newline at end of file diff --git a/docs/roadmap/stage-06-journal-navigation-settings-roadmap.md b/docs/roadmap/stage-06-journal-navigation-settings-roadmap.md new file mode 100644 index 0000000..614ac86 --- /dev/null +++ b/docs/roadmap/stage-06-journal-navigation-settings-roadmap.md @@ -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 \ No newline at end of file diff --git a/docs/roadmap/stage-07-auto-trading-roadmap.md b/docs/roadmap/stage-07-auto-trading-roadmap.md new file mode 100644 index 0000000..5774d3f --- /dev/null +++ b/docs/roadmap/stage-07-auto-trading-roadmap.md @@ -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 \ No newline at end of file diff --git a/docs/roadmap/stage-07-roadmap.md b/docs/roadmap/stage-07-roadmap.md deleted file mode 100644 index 44fbb63..0000000 --- a/docs/roadmap/stage-07-roadmap.md +++ /dev/null @@ -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 \ No newline at end of file