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
Критерии для открытия 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