/
fgtmenow
/
tb
Обзор
Документация
Войти
/
fgtmenow
/
tb
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
.cursorrules
177 строк
6 KB
Azarev Artem
Добавлена база знаний по стратегии Smart Money Trading, включая архитектуру, терминологию и торговые стратегии. Реализованы интерфейсы для типизации компонентов торгового бота и шаблон для торговых стратегий.
17 янв 2026, 03:39
17 янв 2026, 03:39
ab5fefa
Код
Авторство
О чём код?
# Trading Bot - Cursor AI Rules ## Контекст проекта Это торговый бот для криптовалют на бирже Bybit. Основные режимы: - **Бэктестинг** — симуляция на исторических данных (реализован) - **Живая торговля** — реальные сделки через API (в разработке) ## Архитектура Проект использует событийно-ориентированную архитектуру: - `EventProcessor` — центральный диспетчер событий (Singleton) - `Store` — глобальное хранилище состояния (Singleton) - `BaseBroker` → `BacktestBroker` / `LiveBroker` — исполнение ордеров - `BaseFeed` → `BacktestFeed` / `LiveFeed` — источники данных - `BaseStrategy` — базовый класс стратегий См. `ARCHITECTURE.md` для полной документации. ## Стиль кода ### Документация - Docstrings на **русском языке** - Формат Google-style docstrings - Обязательные docstrings для всех публичных классов и методов ```python def calculate_profit(entry_price: float, exit_price: float) -> float: """ Рассчитывает прибыль от сделки. Аргументы: entry_price: Цена входа exit_price: Цена выхода Возвращает: float: Прибыль в процентах """ ``` ### Типизация - **Обязательные type hints** для всех функций и методов - Использовать `| None` вместо `Optional[]` - Использовать `list[]`, `dict[]` вместо `List[]`, `Dict[]` (Python 3.9+) ```python def get_position(self, symbol: str) -> Position | None: ... ``` ### Именование - Классы: `PascalCase` - Функции и методы: `snake_case` - Константы: `UPPER_SNAKE_CASE` - Приватные атрибуты: `_leading_underscore` ### Импорты - Группировка: stdlib → third-party → local - Абсолютные импорты от корня проекта: ```python from bot.broker.base.BaseBroker import BaseBroker from _common.domain.enums.Side import Side ``` ## Ключевые паттерны ### Singleton Используется для глобального состояния: ```python from _common.domain.util.SignletonMeta import SingletonMeta class MyService(metaclass=SingletonMeta): ... ``` ### Strategy Pattern Для торговых стратегий: ```python class MyStrategy(BaseStrategy): def check_entry(self, symbol: str) -> OrderToPlace | None: # Логика входа ... def check_bar(self, symbol: str) -> Action: # Логика выхода ... ``` ### Event Queue Для обработки событий: ```python processor.enqueue( key=symbol, action=NewTimeFrame(...), priority=Priority.USUAL ) ``` ## Терминология (важно!) См. `GLOSSARY.md` для полного словаря. Ключевые термины: - **Swing Point** — локальный экстремум (HH, HL, LH, LL) - **BOS** — Break of Structure (пробой уровня) - **CHoCH** — Change of Character (смена тренда) - **Confirm** — подтверждение тренда (второй BOS) ## База знаний Smart Money В папке `_docs/smart_money/` находится полная база знаний по стратегии Smart Money Trading. См. `_docs/smart_money/README.md` для оглавления. Ключевые разделы для реализации стратегий: - `02-struktura-rynka.md` — структура рынка (HH, HL, LH, LL, BOS, CHoCH) - `04-liquidity-readme.md` — работа с ликвидностью - `05-zony-interesa.md` — зоны интереса (POI) - `06-imbalans.md` — имбалансы (FVG) - `08-order-blok.md` — ордер-блоки - `09-modeli-vhoda.md` — модели входа в позицию - `10-risk-menedzhment.md` — управление рисками При разработке стратегий обращайся к этим материалам для понимания концепций. ## Работа с данными ### DataFrame структура Данные OHLCV хранятся в pandas DataFrame: ```python columns = ['timestamp', 'open', 'high', 'low', 'close', 'volume'] ``` ### Доступ к барам ```python bar = self.model.get_bar(symbol) # Последний бар bar = self.model.get_bar(symbol, -1) # Последний бар bar = self.model.get_bar(symbol, -2) # Предпоследний бар ``` ## Области для расширения ### Высокий приоритет 1. `bot/broker/LiveBroker.py` — реализация методов Bybit API 2. `bot/feed/LiveFeed.py` — WebSocket подключение (не существует) ### Средний приоритет 3. Новые стратегии в `bot/strategy/` 4. Частичное закрытие позиций в `BacktestBroker` 5. Stop-Loss / Take-Profit ордера ### Низкий приоритет 6. Дополнительные индикаторы в `market_structure.py` 7. Визуализация результатов ## Тестирование - Тесты в директории `__test/` - Запуск: `pytest` - Fixtures с тестовыми данными в `__test/fixtures/` ## Не делать - НЕ использовать глобальные переменные (кроме Singleton) - НЕ хардкодить API ключи (использовать .env) - НЕ модифицировать DataFrame напрямую в стратегиях - НЕ блокировать EventProcessor синхронными операциями ## Полезные команды ```bash # Запуск бэктеста python main.py # Запуск тестов pytest # Установка зависимостей pip install -e ".[dev]" ```