Files
mirror_bot_tinv/README.md
T

7.7 KiB

Mirror Bot Tinkoff Investments 🤖💰

Зеркальный торговый бот для платформы Тинькофф Инвестиции, который автоматически копирует сделки с мастер-счёта на слейв-счёт с настраиваемым коэффициентом.

Описание

Бот отслеживает торговые операции на мастер-счёте и автоматически повторяет их на слейв-счёте с заданным коэффициентом. Это позволяет создавать стратегию копирования сделок или управления несколькими счетами одновременно.

Основные возможности

  • 🔄 Автоматическое копирование сделок с мастер-счёта на слейв-счёт
  • 📊 Настраиваемый коэффициент копирования (можно торговать меньшими или большими объёмами)
  • 🔍 Два режима работы: стриминг (real-time) и polling (fallback)
  • ⚖️ Автоматическая ребалансировка портфеля слейв-счёта под мастер-счёт
  • 🛡️ Фильтрация инструментов через белые/чёрные списки FIGI
  • 🧪 DRY-RUN режим для тестирования без реальных ордеров
  • 💾 Сохранение состояния для идемпотентности операций
  • 🚫 Исключение валютных позиций (RUB, USD, EUR)

Установка

Требования

  • Python 3.8+
  • Токены Тинькофф Инвестиции для обоих счетов

Установка зависимостей

Рекомендуется использование виртуального окружения Python.

pip install -r requirements.txt

Настройка окружения

  1. Скопируйте файл .env.example в .env:
cp .env.example .env
  1. Заполните переменные окружения в файле .env:

Использование

Запуск бота

python main.py

Получение токенов

  1. Перейдите в Тинькофф Инвестиции
  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: Данное ПО предназначено только для образовательных целей. Автоматическая торговля связана с высокими рисками. Тщательно изучите все настройки перед использованием в продакшене.