Skip to content
This repository has been archived by the owner. It is now read-only.

AlexanderVolkovTCS/tin-invest-robot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Invest Bot на основе API Тинькофф Инвестиции

x-app-name abelogur

Пререквизиты

  • Java версии не ниже 11
  • Maven версии не ниже 3.8.1

Конфигурация

app.config.token(переменная окружения INVEST_API_TOKEN): токен для API Тинькофф Инвестиций
app.telegram.token(переменная окружения TELEGRAM_BOT_TOKEN): токен телеграм бота (опционально)

Запуск

cd backend/
mvn clean install
java -jar ./target/tin-invest-robot-0.0.1-SNAPSHOT.jar

Общие описание работы сервиса

Вся работа с сервисом осуществляется через REST API. Swagger документация будет доступна тут http://localhost:8090/api/swagger-ui/index.html. Для того, чтобы начать работу, нужно условно "создать" бота. Бот создается на боевом окружении, в песочнице или прогоняется на исторических данных (запросы POST /bot, POST /bot/sandbox, POST /bot/simulation). Бот работает с одним заданным инструментом (параметр figi). Боту задается одна из реализованных стратегий strategyCode и конфиг для нее в strategiesConfig. Все коды реализованных стратегии можно получить по запросу GET /strategy. Боту так же можно задать takeProfit и stopLoss, accountId, если нужно выбрать определенный аккаунт (список доступных аккаунтов GET /account), количество лотов на заявку numberOfLots и telegramBotChatId для получения уведомлений (если задан app.telegram.token).

Получение всех ботов с некоторой информацией - запрос GET /bot. Чтобы остановить бота, нужно его удалить DELETE /bot. Для получения статистики по боту запрос GET /statistic/bot/{botUuid}. Для общей статистики по всем ботам - GET /statistic/general. Статистика содержит в себе показания дохода, комиссии и сколько было использовано средств ботом. Для построения графика с индикаторами, которые используются в стратегии, - запрос GET /indicator/bot/{botUuid}. Ошибки, возникающие в процессе работы бота, записываются в параметр errors.

Описание стратегии "Одноминутный скальпинг"

Чтобы создать бота с этой стратегией надо использовать strategyCode = ONE_MINUTE_SCALPING.

Для стратегии понадобятся индикаторы:

  • 50 EMA (Exponential Moving Average)
  • 100 EMA
  • Стохастичность

Критерии для открытия long:

  • 50 EMA выше чем 100 EMA
  • цена должна вернутся к 100 EMA
  • Стохастичность ниже 20

alt text

Критерии для открытия short:

  • 50 EMA ниже чем 100 EMA
  • цена должна вернутся к 100 EMA
  • Стохастичность выше 20

Рекомендуемые значения:

  • takeProfit - 8-12 pips
  • stopLoss - 2-3 pips

Основная структура проекта

При создании бот InvestBot подписывается на получение свеч CandleObserver. При получении новой свечи бот опрашивает InvestStrategy на наличие сигналов long/short, а так же делает проверку takeProfit/stopLoss. При наличии сигнала или срабатывании takeProfit/stopLoss бот инициализирует заявку в OrderService. Так же бот подписывается на изменение статуса заявки OrderObserver для того, чтобы понять, что заявка выполнилась и можно, при необходимости, создавать новую. Так же подписка нужна, для записи ошибок при выполнении заявки.

Для того чтобы создать новую стратегию, необходимо реализовать интерфейс InvestStrategy и добавить код в StrategyCode.

Открытие интерфейса (визуализация)

Необходим Node.js версии не ниже v16.10

cd frontend/
npm install
npm run start

Интерфейс будет доступен по адресу http://localhost:4200/

Дополнительный функционал

  • Уведомления через Telegram Bot TelegramNotification
  • Получение данных через Web Socket SocketService

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 59.9%
  • SCSS 32.2%
  • TypeScript 6.4%
  • Other 1.5%