Skip to content

WIP: Простой бот для взаимодействия с Тинькофф Инвестициями

Notifications You must be signed in to change notification settings

a-khakimov/tinvest-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scala CI Lines of Code Code Smells Coverage Technical Debt

tinvest-bot

Простой бот для взаимодействия с Тинькофф Инвестициями с возможностью выполнения заявок на покупку акций с заданными значениями StopLoss и TakeProfit по наступлению которых будет сделана заявка на продажу.

Стек используемых технологий

Как собрать и запустить проект

  • Нужно иметь брокерский счет в Тинькофф.Инвестиции, если есть, то получить в личном кабинете токен для авторизации (для торговли на бирже или в песочнице)
  • Зарегистрировать telegram бота и получить токен для авторизации
  • Подготовить базу данных - создать пользователя и таблицы (TODO: Следует автоматизировать этот этап)
CREATE TABLE candles (id SERIAL, time TEXT, interval TEXT, figi TEXT, open REAL, close REAL, hight REAL, low REAL, volume REAL);

CREATE TABLE operations (id SERIAL, figi TEXT, stopLoss REAL, takeProfit REAL,
                         time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
                         operationStatus TEXT, orderId TEXT, orderStatus TEXT, orderOperation TEXT,
                         requestedLots INT, executedLots INT, tgUserId bigint);

CREATE TABLE notifications (id SERIAL, userId INT, message TEXT);
  • В файле конфигурации application.conf задать токены для авторизации telegram-бота и в OpenApi Тинькофф.Инвестиций, и имя/пароль для подключения к базе данных
  • Запустить проект
$ sbt run

Функциональность

  • Выполнение мониторинга стоимости заданных пользователем акций
  • Выполнение заявки на покупку акций по значениям StopLoss и TakeProfit
  • Уведомление пользователя через telegram о выполняемых действиях

Взаимодействие с пользователем

На данном этапе реализован способ взаимодействия через telegram(уведомления и команды), поскольку он проще и быстрее для тестирования и проверки.

Базовые команды

  • /portfolio - Портфель
  • /etfs - Получение списка ETF
  • /currencies - Получение списка валютных пар
  • /orderbook.figi.depth - Получение стакана по FIGI
  • /cancelOrder.orderId - Отмена заявки по OrderId
  • /limitOrderBuy.figi.lots.price - Лимитная заявка на покупку
  • /limitOrderSell.figi.lots.price - Лимитная заявка на продажу
  • /marketOrderBuy.figi.lots - Рыночная заявка на покупку
  • /marketOrderSell.figi.lots - Рыночная заявка на продажу

Дополнительные команды

  • /marketOrderBuy.figi.lots.stoploss.takeprofit - Рыночная заявка на покупку с указанными значениями stoploss и takeprofit. stoploss и takeprofit имеют тип Double. Например, команда /marketOrderBuy.BBG009S39JX6.10.100,01.200,02 выполнит покупку 10 лотов акций BBG009S39JX6 со значением stoploss=10.100 и takeprofit=200,02. При этом значение stoploss не должна превышать значение текущей стоимости акции и, соответственно, значение takeprofit должна превышать текущую стоимость акции. Команда вернет информацию о покупке и id операции.
  • /activeOperations - Список активных операций
  • /stopOperations - Отменить все активные операции
  • /completedOperations - Получить список последних завершенных операций
  • /stopOperations.id - Отменить операцию по id

Под операцией подразумевается процесс подписки на отслеживание стоимости акции по figi, которая завершится по достижению значений stoploss и takeprofit или по команде stop.

About

WIP: Простой бот для взаимодействия с Тинькофф Инвестициями

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages