Skip to content
This repository has been archived by the owner. It is now read-only.
/ ttb Public archive
forked from UncleSema/ttb

Tinkoff Trade Botfather - приложение для создания, анализа и тестирования алготрейдинговых стратегий, работающее с Tinkoff Invest Api

License

Notifications You must be signed in to change notification settings

AlexanderVolkovTCS/ttb

 
 

Repository files navigation

Tinkoff Trade Botfather

Приложение для создания, анализа и тестирования стратегий, использующее Tinkoff Инвестиции.

Предупреждение: приложение не гарантирует дохода от Тинькофф Инвестиций.

Использованный стек технологий

  • Java SDK Tinkoff Invest - получение всей необходимой информации о бумагах, выставление заявок на биржу, получение информации о пользователе
  • Spring - основной framework приложения
  • Caffeine - библиотека для кэширования запросов к API
  • Thymeleaf - framework для генерации HTML страницы по шаблону
  • Lombok - библиотека упрощающая код

Что умеет?

  • Режим анализа: тестируйте свои смелые догадки, не дожидаясь открытия торгов и не тратя свои деньги. Выберите стратегию, интересный Вам временной промежуток и вперёд!
  • Работать одновременно с несколькими пользователями. Вы можете одновременно торговать на реальной бирже стратегиями, в которых Вы уверены, торговать в режиме песочницы оставшимися и изобретать новые в режиме анализа.
  • Устали от непонятных консольных приложений? У нас приятный и удобный веб-интерфейс!

Требования перед запуском приложения

  • Установленная виртуальная Java машина (JVM) версии 17 и выше. Скачать: OpenJDK 17 или Oracle.
  • Аккаунт в Тинькофф инвестициях (желательно, с включенной маржинальной торговлей) и токен для API запросов.
  • Стабильное Интернет-соединение.

Запуск приложения

  1. Скачайте последний релиз приложения.
  2. Запустите TinkoffTradeBot.jar через командную строку: java -jar TinkoffTradeBot.jar.
  3. Перейдите в браузере по адресу localhost:8080

Чуть более долгий способ:

  1. Склонируйте репозиторий: git clone https://github.com/UncleSema/ttb
  2. Запустите приложение: ./gradlew bootRun
  3. Перейдите в браузере по адресу localhost:8080

Что дальше?

После запуска приложения вы должны оказаться на странице создания нового пользователя

Добавление пользователя

  1. Получите токен Тинькофф Инвестиций и вбейте его в поле "Токен".
  2. Выберите режим: работа в песочнице, работа на реальной бирже или режим симуляции работы стратегии на исторических данных.
  3. Если вы собираетесь работать на реальной бирже, введите accountId (в других режимах сервис будет создавать новый Sandbox аккаунт и брать accountId, которое генерирует Api Tinkoff Инвестиций).
  4. Выберите стратегию, с которой собираетесь работать (в анализ-режиме доступны только стратегии, работающие со свечами, т.к. из api нельзя получить исторические стаканы).
  5. Настройте стратегию.
  6. Выберите максимальное количество денег (в рублях), которое сможет потратить стратегия.
  7. Выберите бумаги, с которыми будет работать бот (введите их FIGI).

Далее вы окажетесь на странице пользователя, где вы сможете увидеть выбранные параметры, а так же запустить стратегию, нажав на соответствующую кнопку (если что-то пошло не так, вы можете экстренно продать по рыночной цене все бумаги, которые купила стратегия, нажав на соответствующую кнопку).

Страница пользователя

Как добавить свою стратегию?

Для этого достаточно реализовать нужный интерфейс: стратегии, использующей стакан , или стратегии, использующей свечи . Причем Вы можете реализовать оба интерфейса: использовать и стакан, и свечи.

"Добавить стратегию" значит:

  1. При поступлении новой свечи / стакана, сказать стоит ли идти в лонг / в шорт.
  2. Добавить параметры, которые Вы бы хотели видеть и настраивать через UI.
  3. Добавить уникальное имя стратегии, чтобы выбирать её через UI.

Примеры стратегий: на стакане , на свечах.

Важно: для того, чтобы стратегия была доступна при выборе через UI, её нужно добавить в ApplicationModule в метод availableCandleStrategies. Там уже добавлены стратегии, работающие на стакане и на свечах.

Удобный способ создания пользователя при старте

Очень часто, например при deploy, у нас нет возможности / желания заходить в браузер, создавать там нового пользователя и включать стратегию для него. В приложении реализован способ создать при старте нового пользователя и, при желании, запустить для него стратегию. Для этого нужно запустить приложение с параметрами вида:

java -jar TinkoffTradeBotfather.jar \
--user.token=<TOKEN> \
--user.mode=<MODE> \
--user.account-id=<ACCOUNT_ID> \
--user.figis="<FIGI1>,<FIGI2>..." \
--user.max-balance=<MAX_BALANCE> \
--user.strategy-parameters.name=<STRATEGY_NAME> \
--user.strategy-parameters.parameter1=<VALUE1> \
--user.strategy-enable=<STRATEGY_ENABLE>

Пример правильной команды:

java -jar TinkoffTradeBotfather.jar \
--user.token='t.123' \
--user.mode='SANDBOX' \
--user.figis="BBG004730N88,BBG004730RP0" \
--user.max-balance=3000 \
--user.strategy-parameters.name='Стакан' \
--user.strategy-parameters.takeProfit=0.4 \
--user.strategy-enable=true

После выполнения данной команды будет создан SANDBOX пользователь с токеном t.123, балансом 3000 рублей, с автоматически включенной стратегией 'Стакан', у которой параметр takeProfit = 0.4 (остальные параметры по-умолчанию), следящей за бумагами Газпром и Сбербанк.

Так же можно настроить автоматическое создание пользователя в конфигурации приложения. Пример создания пользователя аналогичному пользователю выше через конфигурацию приложения .

Режим анализа

Очень часто трейдерам не хочется ждать открытия торгов и/или тратить свои деньги, а протестировать стратегию хочется. Для этого в приложение добавлен режим анализа.

  1. На странице пользователя выберите режим анализа.
  2. Выберите стратегию для анализа (можно выбрать только стратегии, использующие свечи, т.к. Тинькофф Инвестиции не поддерживают получение исторических стаканов).
  3. На странице пользователя выберите временной промежуток для анализа и размер свечей (чем более маленькие свечи, тем более точный анализ).
  4. Нажмите "Просимулировать".

На странице пользователя будут показаны результаты последней симуляции стратегии в том формате, в котором они представляются во время торговли на бирже.

Важно: не делайте временной промежуток слишком большим, так как время получения свечей из API может значительно увеличиться.

Режим симуляции стратегии

В дальнейших планах

  • Добавить графики при помощи Google Charts и JavaScript

About

Tinkoff Trade Botfather - приложение для создания, анализа и тестирования алготрейдинговых стратегий, работающее с Tinkoff Invest Api

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 83.4%
  • HTML 13.2%
  • CSS 2.3%
  • JavaScript 1.1%