Coder Social home page Coder Social logo

unclesema / ttb Goto Github PK

View Code? Open in Web Editor NEW
1.0 0.0 3.0 1.14 MB

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

License: Apache License 2.0

Java 83.37% JavaScript 1.06% HTML 13.24% CSS 2.33%

ttb's Introduction

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

ttb's People

Contributors

unclesema avatar

Stargazers

 avatar

ttb's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.