Skip to main content

Spring Boot Starter

Стартер для интеграции SDK в приложение на Spring Boot.

Какие задачи решает

  • Быстрое создание торгового робота.
  • Автоматическая конфигурация подключения к API.
  • Загрузка исторических данных для стратегии.

Добавить модуль в проект


Минимальная требуемая версия Java — 17 или выше.

Использование

  1. В application.yml укажите токен для подключения к API Т-Инвестиций:

    invest:
    connector:
    token: ${INVEST_TOKEN}
  2. Создайте бота для торговли по стратегии на основе японских свечей:

    @Component
    public class MyCandleTradingBot implements CandleTradingBot {

    @Override
    public GetCandlesRequest.CandleSource getCandleSource() {
    // источник свечных данных
    return GetCandlesRequest.CandleSource.CANDLE_SOURCE_INCLUDE_WEEKEND;
    }

    @Override
    public int getWarmupLength() {
    // количество свечей, которые будут загружены для стабилизации значений индикаторов
    // лучше ставить это значение равным самому большому периоду индикатора, используемого в Вашей стратегии
    return 100;
    }

    @Override
    public Map<CandleInstrument, Function<BarSeries, Strategy>> getStrategies() {
    // настраиваем бота на торговлю бумагой Т-Технологии по стратегии ta4j
    var ttechShare = CandleInstrument.newBuilder()
    .setInstrumentId("87db07bc-0e02-4e29-90bb-05e8ef791d7b")
    .setInterval(SubscriptionInterval.SUBSCRIPTION_INTERVAL_ONE_MINUTE)
    .build();
    return Map.of(
    ttechShare, createStrategy(5, 10)
    );
    }

    @Override
    public void onStrategyEnterAction(CandleInstrument instrument, Bar bar) {
    // выполняем действие при входе в позицию
    log.info("Entering position for instrument {} by price: {}", instrument.getInstrumentId(), bar.getClosePrice());
    }

    @Override
    public void onStrategyExitAction(CandleInstrument instrument, Bar bar) {
    // выполняем действие при выходе из позиции
    log.info("Exiting position for instrument {} by price: {}", instrument.getInstrumentId(), bar.getClosePrice());
    }

    // Задаём стратегию на двух индикаторах EMA
    public Function<BarSeries, Strategy> createStrategy(int shortEmaPeriod, int longEmaPeriod) {
    return barSeries -> {
    ClosePriceIndicator closePrice = new ClosePriceIndicator(barSeries);
    EMAIndicator shortEma = new EMAIndicator(closePrice, shortEmaPeriod);
    EMAIndicator longEma = new EMAIndicator(closePrice, longEmaPeriod);
    Rule buyingRule = new CrossedUpIndicatorRule(shortEma, longEma);
    Rule sellingRule = new CrossedDownIndicatorRule(shortEma, longEma);
    return new BaseStrategy(buyingRule, sellingRule);
    };
    }
    }

Для создания торгового робота на основе японских свечей нужно реализовать интерфейс CandleTradingBot. После этого автоконфигурация загрузит необходимые данные, подключится к MarketDataStream и повесит на него листенеры. Вам останется написать свою логику в методах onStrategyEnterAction и onStrategyExitAction.

openapi@tbank.ru

АО «ТБанк» использует файлы «cookie» с целью персонализации сервисов и повышения удобства пользования веб-сайтом. «Cookie» представляют собой небольшие файлы, содержащие информацию о предыдущих посещениях веб-сайта. Если вы не хотите использовать файлы «cookie», измените настройки браузера.