67 lines
5.9 KiB
Markdown
67 lines
5.9 KiB
Markdown
# 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-вход с защитой.
|