# LLM Trade Bot Автономный DeepSeek-агент для выделенного **Bybit Demo Trading** либо **Binance Testnet** аккаунта. Один процесс работает только с одной биржей, выбранной в `config.toml`; одновременная торговля на обеих не поддерживается. Бот анализирует Spot и `linear` USDT-рынки два раза в день, умеет искать рыночный контекст в интернете и управляется через Telegram. `linear` — публичное имя USDⓈ-M Futures: оно намеренно сохранено в инструментах агента и промптах. Production endpoints не поддерживаются. Для Binance адреса Spot Testnet и USDⓈ-M Futures Demo Testnet зафиксированы в коде и не настраиваются через TOML. ## Возможности - новая stateless-сессия `micro-agents` для каждого анализа; - долговременные `note` и односторонние `ask_admin` через SQLite/Telegram; - общий exchange gateway с нормализованными ордерами, сделками и приватными WebSocket-событиями; - сканер ликвидных Spot и Linear инструментов, свечи 1h/4h/1d, стакан и индикаторы; - Brave Search и безопасное чтение выбранных публичных HTTPS-страниц; - максимум 2% equity риска на идею, 40% gross exposure, пять идей и 3x Linear leverage; - обязательный exchange-side stop-loss, TP или trailing для Linear, TP/SL для Spot; - на Binance Spot — одна атомарная OTOCO-конструкция: Limit-вход и ожидающая рыночная TP/SL OCO-пара; если Testnet её отклоняет, вход не создаётся; - на Binance USDⓈ-M — one-way + isolated margin, плечо перед входом и обязательный stop через `/fapi/v1/algoOrder`; при ошибке установки stop-loss позиция аварийно закрывается; - отдельные снимки и лимиты 2%/40% для Spot и Futures кошельков Binance, при общем лимите пяти идей; - Telegram-команды, приватные WebSocket-потоки, аудит и REST-reconciliation. ## Подготовка 1. Выберите `exchange.provider` в `config.toml`. 2. Для Bybit создайте ключ в основном аккаунте после переключения в **Demo Trading**, а не на testnet. Настройте Unified account в `ISOLATED_MARGIN` и one-way position mode. 3. Для Binance создайте два отдельных набора ключей: Spot Testnet на [testnet.binance.vision](https://testnet.binance.vision/) и USDⓈ-M Futures Testnet/Demo. У ключей должны быть права чтения и торговли. Futures-аккаунт должен использовать one-way mode; бот проверит это при запуске и выставит isolated margin/плечо перед входом. 4. Создайте Telegram-бота и получите `api_id`/`api_hash` приложения Telegram. 5. Получите DeepSeek API key и Brave Search API key. 6. Скопируйте `config.example.toml` в `config.toml`, а `prompts.example.md` в `prompts.md`. 7. Замените секреты только выбранного провайдера. Локальные конфиги исключены из Git. ```powershell Copy-Item config.example.toml config.toml Copy-Item prompts.example.md prompts.md uv sync uv run llm-trade-bot --config config.toml ``` По умолчанию анализ запускается в 09:00 и 21:00 `Europe/Warsaw`. Пропущенные во время остановки процесса запуски не воспроизводятся. ## Промпты Путь к Markdown-файлу задаётся через `prompts.file_path` в `config.toml`. В нём обязательны две именованные секции: - `## master_prompt` — системные правила и поведение агента; - `## run_prompt` — инструкция для каждого торгового запуска. Границами частей служат заголовки второго уровня. Внутри самих промптов используйте `###` и более глубокие заголовки. Файл перечитывается перед каждой новой stateless-сессией, поэтому изменения применяются без перезапуска сервиса; уже выполняющаяся сессия продолжает работать со своим снимком промптов. ## Telegram Доступ имеют только ID из `telegram.admin_user_ids`: - `/status`, `/positions`, `/orders`, `/last`, `/notes`; - `/pause`, `/resume`; - `/run` для внепланового анализа; - `/help`. `/pause` запрещает новые агентские сессии и входы, но уже размещённые защитные ордера остаются на выбранной бирже. ## Тесты ```powershell uv run pytest ``` Тесты не используют реальные ключи и не создают ордера. Перед первым полноценным запуском проверьте `/status`, `/positions` и `/orders` на выбранном Testnet/Demo-кошельке. Для Binance отдельно проверьте Spot Limit OTOCO и Futures Market-вход с защитой.