Files
llm-trade-bot/README.md
2026-09-22 14:15:00 +02:00

71 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LLM Trade Bot
Автономный GLM-агент через **z.ai** для выделенного **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-страниц;
- без программных лимитов на risk/exposure, число позиций, дублирующие входы и срок жизни Limit-ордеров; размер нового входа можно задать через quote notional или процент доступного баланса (по умолчанию используется весь buying power выбранного кошелька);
- обязательный 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. Получите z.ai API key и Brave Search API key.
6. Скопируйте `config.example.toml` в `config.toml`, а `prompts.example.md` в `prompts.md`.
7. Замените секреты только выбранного провайдера. Локальные конфиги исключены из Git.
Для GLM используйте раздел `[zai]`: базовый URL `https://api.z.ai/api/paas/v4` и модель `glm-4.6` уже заданы в примере. Ключ создаётся в z.ai; раздел `[deepseek]` больше не поддерживается.
Раздел `[risk]` больше не используется: если он остался в существующем `config.toml`, его значения игнорируются.
```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-вход с защитой.