Skip to content

ako2345/SimpleGridBot

Repository files navigation

Сеточный бот для Tinkoff Invest Robot Contest

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

  • Java версии не ниже 11
  • Gradle версии не ниже 5.0
  • Наличие учётной записи в Тинькофф Инвестиции (маржинальная торговля не обязательна)

Описание стратегии

Бот покупает актив при снижении цены и продаёт при её росте. Это достигается путём разбиения заданного ценового диапазона на несколько уровней и отслеживания пересечения ценой этих уровней.

При инициализаци бот покупает некоторое количество актива и начинает следить за изменением цены. При превышении ценой определённых уровней происходит продажа части активов, при обратном движении цены осуществляется покупка активов.

Реализация

В проекте представлены два способа реализации стратегии.

В ветке bot-makes-limit-orders (а также в master) торговый робот создаёт ордера для каждого ценового уровня и следит за их исполнением с помощью стрима ордеров, после чего актуализирует список поручений. Однако стрим ордеров недоступен в режиме "песочницы" и его пришлось эмулировать, чтобы соответствовать условиям конкурса.

В ветке bot-listens-prices торговый робот следит за ценой инструмента и при пересечении ценового уровня создаёт ордер на покупку или продажу по рыночной цене. Этот способ приносит меньше прибыли из-за исполнения ордера не по значению пересечённого ценового уровня.

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

app:
  config:
    app-name: ako2345.SimpleGridBot
    sandbox-mode: true
    real-token:
    real-account:
    sandbox-token:
    sandbox-account:

server:
  port: ${PORT:5000}
  • app-name – имя приложения.
  • sandbox-mode – флаг режима "песочница".
  • real-token – токен реального пользователя (заполнить, если sandbox-mode: false).
  • real-account – идентификатор реальной учётной записи (заполнить, если sandbox-mode: false).
  • sandbox-token – токен пользователя в "песочнице" (заполнить, если sandbox-mode: true).
  • sandbox-account – идентификатор учётной записи в "песочнице" (заполнить, если sandbox-mode: true).
  • port – порт приложения.

Эндпойнты

После запуска приложения будут доступны следующие эндпойнты:

Пример конфигурации для проверки (backtest) бота

{
  "gridBotConfig": {
    "figi": "BBG000B9XRY4",
    "lowerPrice": 130,
    "upperPrice": 180,
    "gridsNumber": 27,
    "investment": 1000000
  },
  "days": 3,
  "fee": 0.00025
}
  • figi – идентификатор инструмента (FIGI).
  • lowerPrice – нижняя цена ценовой сетки.
  • upperPrice – верхняя цена ценовой сетки.
  • gridsNumber – количество ценовых уровней сетки.
  • investment – размер инвестиций.
  • days – количество дней для backtest.
  • fee – размер комиссии.

Пример конфигурации для инициализации бота

{                                                                      
    "figi": "BBG000B9XRY4",                                            
    "lowerPrice": 150,                                                 
    "upperPrice": 180,
    "gridsNumber": 7,
    "investment": 1000000
}
  • figi – идентификатор инструмента (FIGI).
  • lowerPrice – нижняя цена ценовой сетки.
  • upperPrice – верхняя цена ценовой сетки.
  • gridsNumber – количество ценовых уровней сетки.
  • investment – размер инвестиций.

Пример конфигурации для остановки бота

{                                                                      
    "instrumentShouldBeSold": true
}
  • instrumentShouldBeSold – флаг, указывающий нужно ли продавать купленный ботом инструмент по текущей цене.

Пример конфигурации для анализа инструмента

{
  "figi": "BBG000B9XRY4",
  "days": 3,
  "fee": 0.00025
}
  • figi – идентификатор инструмента (FIGI).
  • days – количество дней для backtest.
  • fee – размер комиссии.

Планы

  • поддержка одновременной работы нескольких ботов.
  • вместо лимитных ордеров попробовать делать стоп-ордера.
  • обеспечить корректную работу между торговыми сессиями.
  • реализовать стоп-лосс и тэйк-профит.

PS

Не судите строго, это моё первое приложение на фреймворке Spring!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published