mirror of
https://github.com/ada-dmitry/mirror_bot_tinv.git
synced 2026-09-24 08:10:18 +00:00
156 lines
7.7 KiB
Markdown
156 lines
7.7 KiB
Markdown
# Mirror Bot Tinkoff Investments 🤖💰
|
|
|
|
Зеркальный торговый бот для платформы Тинькофф Инвестиции, который автоматически копирует сделки с мастер-счёта на слейв-счёт с настраиваемым коэффициентом.
|
|
|
|
## Описание
|
|
|
|
Бот отслеживает торговые операции на мастер-счёте и автоматически повторяет их на слейв-счёте с заданным коэффициентом. Это позволяет создавать стратегию копирования сделок или управления несколькими счетами одновременно.
|
|
|
|
### Основные возможности
|
|
|
|
- 🔄 **Автоматическое копирование сделок** с мастер-счёта на слейв-счёт
|
|
- 📊 **Настраиваемый коэффициент** копирования (можно торговать меньшими или большими объёмами)
|
|
- 🔍 **Два режима работы**: стриминг (real-time) и polling (fallback)
|
|
- ⚖️ **Автоматическая ребалансировка** портфеля слейв-счёта под мастер-счёт
|
|
- 🛡️ **Фильтрация инструментов** через белые/чёрные списки FIGI
|
|
- 🧪 **DRY-RUN режим** для тестирования без реальных ордеров
|
|
- 💾 **Сохранение состояния** для идемпотентности операций
|
|
- 🚫 **Исключение валютных позиций** (RUB, USD, EUR)
|
|
|
|
## Установка
|
|
|
|
### Требования
|
|
|
|
- Python 3.8+
|
|
- Токены Тинькофф Инвестиции для обоих счетов
|
|
|
|
### Установка зависимостей
|
|
|
|
> Рекомендуется использование виртуального окружения Python.
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### Настройка окружения
|
|
|
|
1. Скопируйте файл `.env.example` в `.env`:
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
2. Заполните переменные окружения в файле `.env`:
|
|
|
|
## Использование
|
|
|
|
### Запуск бота
|
|
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
### Получение токенов
|
|
|
|
1. Перейдите в [Тинькофф Инвестиции](https://www.tinkoff.ru/invest/)
|
|
2. Откройте настройки API
|
|
3. Создайте токены с необходимыми правами:
|
|
- **Мастер-токен**: чтение операций и портфеля
|
|
- **Слейв-токен**: выставление ордеров + чтение портфеля
|
|
|
|
### ID счетов
|
|
|
|
ID счетов можно получить через API или в личном кабинете Тинькофф Инвестиции.
|
|
|
|
## Конфигурация
|
|
|
|
### Параметры
|
|
|
|
| Параметр | Описание | Значение по умолчанию |
|
|
|----------|----------|----------------------|
|
|
| `COEFF` | Коэффициент копирования сделок | 1.0 |
|
|
| `DRY_RUN` | Тестовый режим без реальных ордеров | false |
|
|
| `POLL_INTERVAL_SEC` | Интервал polling-режима | 10 |
|
|
| `ALLOW_FIGI` | Белый список FIGI (через запятую) | пусто |
|
|
| `DENY_FIGI` | Чёрный список FIGI (через запятую) | пусто |
|
|
| `MIN_LOTS` | Минимальное количество лотов | 1 |
|
|
| `MAX_LOTS_PER_ORDER` | Максимальное количество лотов в ордере | 1000 |
|
|
|
|
### Примеры коэффициентов
|
|
|
|
- `COEFF=0.5` - слейв-счёт торгует вдвое меньшими объёмами
|
|
- `COEFF=1.0` - слейв-счёт повторяет объёмы мастер-счёта
|
|
- `COEFF=2.0` - слейв-счёт торгует вдвое большими объёмами
|
|
|
|
## Принцип работы
|
|
|
|
### Режимы работы
|
|
|
|
1. **Streaming (основной)**: Использует WebSocket-стрим для получения сделок в реальном времени
|
|
2. **Polling (fallback)**: При сбое стрима переключается на периодический опрос операций
|
|
|
|
### Алгоритм
|
|
|
|
1. При запуске выполняется ребалансировка портфеля слейв-счёта
|
|
2. Бот подключается к потоку сделок мастер-счёта
|
|
3. При появлении новой сделки:
|
|
- Проверяется фильтр FIGI
|
|
- Вычисляется объём для слейв-счёта (мастер_объём × коэффициент)
|
|
- Выставляется рыночный ордер на слейв-счёте
|
|
4. Периодически выполняется ребалансировка (каждые 2 минуты)
|
|
|
|
### Безопасность
|
|
|
|
- Валютные позиции (RUB, USD, EUR) автоматически исключаются
|
|
- Сохранение состояния предотвращает дублирование ордеров
|
|
- DRY-RUN режим для безопасного тестирования
|
|
- Лимиты на минимальные и максимальные объёмы
|
|
|
|
## Логирование
|
|
|
|
Бот выводит подробную информацию о своей работе:
|
|
|
|
- `[STREAM]` - события стрим-режима
|
|
- `[POLL]` - события polling-режима
|
|
- `[REBALANCE]` - операции ребалансировки
|
|
- `[REB]` - конкретные ордера ребалансировки
|
|
|
|
Пример лога:
|
|
```
|
|
Mirror bot starting… DRY_RUN= True COEFF= 1.0
|
|
[REBALANCE] start
|
|
[STREAM] connect… Dry-run: True
|
|
[STREAM] SBER BBG004730N88: ORDER_DIRECTION_BUY master=10 -> slave=10
|
|
-> SLAVE ORDER_DIRECTION_BUY 10 lot(s) BBG004730N88 (order_id=...)
|
|
```
|
|
|
|
## Устранение неполадок
|
|
|
|
### Частые ошибки
|
|
|
|
1. **"Заполните .env"** - проверьте заполнение всех обязательных переменных
|
|
2. **RequestError при ордерах** - проверьте права токена и баланс счёта
|
|
3. **Ошибки подключения** - проверьте интернет-соединение и валидность токенов
|
|
|
|
### Файл состояния
|
|
|
|
Файл `mirror_state.json` содержит:
|
|
- Время последней обработки операций
|
|
- Список ID обработанных операций (для предотвращения дублей)
|
|
|
|
При проблемах можно удалить этот файл для сброса состояния.
|
|
|
|
## Безопасность и ответственность
|
|
|
|
⚠️ **ВАЖНО**:
|
|
- Этот бот выполняет реальные торговые операции с вашими деньгами
|
|
- Тщательно протестируйте настройки в DRY-RUN режиме
|
|
- Автор не несёт ответственности за торговые потери
|
|
- Используйте на свой страх и риск
|
|
|
|
## Лицензия
|
|
|
|
MIT License - используйте и изменяйте свободно.
|
|
|
|
|
|
**Disclaimer**: Данное ПО предназначено только для образовательных целей. Автоматическая торговля связана с высокими рисками. Тщательно изучите все настройки перед использованием в продакшене.
|