mirror of
https://github.com/ada-dmitry/mirror_bot_tinv.git
synced 2026-09-24 00:00:17 +00:00
Инициализация репозитория для Зеркального Бота Т-Инвестиций
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
# 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**: Данное ПО предназначено только для образовательных целей. Автоматическая торговля связана с высокими рисками. Тщательно изучите все настройки перед использованием в продакшене.
|
||||
Reference in New Issue
Block a user