Mirror Bot Tinkoff Investments 🤖💰
Зеркальный торговый бот для платформы Тинькофф Инвестиции, который автоматически копирует сделки с мастер-счёта на слейв-счёт с настраиваемым коэффициентом.
Описание
Бот отслеживает торговые операции на мастер-счёте и автоматически повторяет их на слейв-счёте с заданным коэффициентом. Это позволяет создавать стратегию копирования сделок или управления несколькими счетами одновременно.
Основные возможности
- 🔄 Автоматическое копирование сделок с мастер-счёта на слейв-счёт
- 📊 Настраиваемый коэффициент копирования (можно торговать меньшими или большими объёмами)
- 🔍 Два режима работы: стриминг (real-time) и polling (fallback)
- ⚖️ Автоматическая ребалансировка портфеля слейв-счёта под мастер-счёт
- 🛡️ Фильтрация инструментов через белые/чёрные списки FIGI
- 🧪 DRY-RUN режим для тестирования без реальных ордеров
- 💾 Сохранение состояния для идемпотентности операций
- 🚫 Исключение валютных позиций (RUB, USD, EUR)
Установка
Требования
- Python 3.8+
- Токены Тинькофф Инвестиции для обоих счетов
Установка зависимостей
Рекомендуется использование виртуального окружения Python.
pip install -r requirements.txt
Настройка окружения
- Скопируйте файл
.env.exampleв.env:
cp .env.example .env
- Заполните переменные окружения в файле
.env:
Использование
Запуск бота
python main.py
Получение токенов
- Перейдите в Тинькофф Инвестиции
- Откройте настройки API
- Создайте токены с необходимыми правами:
- Мастер-токен: чтение операций и портфеля
- Слейв-токен: выставление ордеров + чтение портфеля
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- слейв-счёт торгует вдвое большими объёмами
Принцип работы
Режимы работы
- Streaming (основной): Использует WebSocket-стрим для получения сделок в реальном времени
- Polling (fallback): При сбое стрима переключается на периодический опрос операций
Алгоритм
- При запуске выполняется ребалансировка портфеля слейв-счёта
- Бот подключается к потоку сделок мастер-счёта
- При появлении новой сделки:
- Проверяется фильтр FIGI
- Вычисляется объём для слейв-счёта (мастер_объём × коэффициент)
- Выставляется рыночный ордер на слейв-счёте
- Периодически выполняется ребалансировка (каждые 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=...)
Устранение неполадок
Частые ошибки
- "Заполните .env" - проверьте заполнение всех обязательных переменных
- RequestError при ордерах - проверьте права токена и баланс счёта
- Ошибки подключения - проверьте интернет-соединение и валидность токенов
Файл состояния
Файл mirror_state.json содержит:
- Время последней обработки операций
- Список ID обработанных операций (для предотвращения дублей)
При проблемах можно удалить этот файл для сброса состояния.
Безопасность и ответственность
⚠️ ВАЖНО:
- Этот бот выполняет реальные торговые операции с вашими деньгами
- Тщательно протестируйте настройки в DRY-RUN режиме
- Автор не несёт ответственности за торговые потери
- Используйте на свой страх и риск
Лицензия
MIT License - используйте и изменяйте свободно.
Disclaimer: Данное ПО предназначено только для образовательных целей. Автоматическая торговля связана с высокими рисками. Тщательно изучите все настройки перед использованием в продакшене.