Add Binance Testnet exchange gateway

This commit is contained in:
Azimkin
2026-09-19 17:14:46 +02:00
parent 7272147270
commit 93cafe8160
18 changed files with 2505 additions and 230 deletions

View File

@@ -1,27 +1,32 @@
# LLM Trade Bot
Автономный DeepSeek-агент для выделенного **Bybit Demo Trading** аккаунта. Бот анализирует Spot и Linear USDT-рынки два раза в день, умеет искать рыночный контекст в интернете и управляется через Telegram.
Автономный DeepSeek-агент для выделенного **Bybit Demo Trading** либо **Binance Testnet** аккаунта. Один процесс работает только с одной биржей, выбранной в `config.toml`; одновременная торговля на обеих не поддерживается. Бот анализирует Spot и `linear` USDT-рынки два раза в день, умеет искать рыночный контекст в интернете и управляется через Telegram.
Сервис принципиально не поддерживает production endpoint Bybit. Размер позиции и все лимиты проверяются обычным кодом непосредственно перед отправкой ордера.
`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;
- Telegram-команды, приватный Bybit WebSocket, аудит и восстановление состояния через REST.
- на 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. Создайте ключ в основном аккаунте Bybit после переключения в **Demo Trading**, а не на testnet.
2. Настройте Unified account в `ISOLATED_MARGIN` и one-way position mode. Для Spot margin borrowing не используется.
3. Создайте Telegram-бота и получите `api_id`/`api_hash` приложения Telegram.
4. Получите DeepSeek API key и Brave Search API key.
5. Скопируйте `config.example.toml` в `config.toml`, а `prompts.example.md` в `prompts.md`.
6. Замените секреты в `config.toml`. Локальные конфиги исключены из Git.
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
@@ -50,7 +55,7 @@ uv run llm-trade-bot --config config.toml
- `/run` для внепланового анализа;
- `/help`.
`/pause` запрещает новые агентские сессии и входы, но уже размещённые защитные ордера остаются на Bybit.
`/pause` запрещает новые агентские сессии и входы, но уже размещённые защитные ордера остаются на выбранной бирже.
## Тесты
@@ -58,4 +63,4 @@ uv run llm-trade-bot --config config.toml
uv run pytest
```
Тесты не используют реальные ключи и не создают ордера. Перед первым полноценным запуском рекомендуется пополнить Demo Trading только USDT и проверить `/status`, `/positions` и `/orders`.
Тесты не используют реальные ключи и не создают ордера. Перед первым полноценным запуском проверьте `/status`, `/positions` и `/orders` на выбранном Testnet/Demo-кошельке. Для Binance отдельно проверьте Spot Limit OTOCO и Futures Market-вход с защитой.