January 31

TKSBrokerAPI: автоматизация установки сетки ордеров

Введение

Торговля на бирже требует не только аналитического мышления, но и оперативности. Представьте, что вам нужно выставить десятки или даже сотни ордеров по разным инструментам. Немногие торговые платформы позволяют сделать такие операции «из коробки». Вручную это займёт часы, а вот с помощью сценария «Установщик сетки ордеров» на базе платформы ⚙️ TKSBrokerAPI — считаные секунды.

В этом кратком обзоре разберём, как работает этот сценарий, как его настроить и запустить, и почему он может стать вашим незаменимым помощником в торговле.

Что такое «Установщик сетки ордеров»

«Установщик сетки ордеров» — это скрипт, который позволяет автоматически выставлять сетки лимитных или стоп-ордеров с заданным шагом в процентах от указанной цены первого ордера в сетке, определённой лотностью и направления. Он работает с помощью платформы TKSBrokerAPI и поддерживает параллельное выполнение, что позволяет одновременно обрабатывать множество инструментов, заданных по их тикерам.

Схематичная иллюстрация для пояснения работы сценария «Установщик сетки ордеров»

Основные возможности

  • Параллельное выполнение. Ордера выставляются одновременно для всех инструментов, указанных в конфигурации.
  • Автоматическое определение цены. Первый ордер размещается на заданном расстоянии в процентах от текущей цены, а остальные формируют сетку выше или ниже, с шагом, заданном в процентах от цены первого ордера.
  • Гибкая настройка
    • Возможность задать:
      • целевую цену для первого ордера в сетке (target — действительное число), значение которой указывается в процентах от текущей рыночной цены инструмента — если она больше нуля, то первый ордер будет выставлен на заданный процент выше текущей цены, если меньше нуля, то ниже текущей цены, а если равна нулю, то сетка будет строиться начиная от текущей рыночной цены;
      • шаг сетки (gridStep != 0 — действительное ненулевое число) в процентах от цены первого ордера (target) в сетке — если он больше нуля, то сетка будет строиться выше целевой цены, если меньше нуля, то ниже целевой цены;
      • лотность (volume >= 1 — целое число) — объём инструмента для покупки или продажи, заданный целым количеством лотов;
      • направление (direction: "Buy" или direction: "Sell") — указание скрипту: выставить ордера в сетке на покупку или на продажу.
    • Возможность указать тип ордера:
      • лимитный (type: "Limit") — заявка по ордеру выставляется в стакан цен и активна только до окончания текущей торговой сессии биржи;
      • стоп-ордер (type: "Stop") — заявка по ордеру контролируется брокером, активна до указанной даты либо бессрочно, а при достижении цены исполнения ордера будет автоматически создана лимитная заявка.

Как это работает

Основные шаги сценария следующие.

  1. Получение текущих цен. Скрипт запрашивает текущую цену для каждого тикера, указанного в конфигурации.
  2. Выставление ордеров. В зависимости от выбранного направления и шага сетки, ордера выставляются автоматически. Первый ордер размещается на заданном расстоянии от текущей цены, а остальные формируют сетку выше или ниже него.

Скорость выставления ордеров ограничена лимитами брокера, но в среднем один ордер выставляется за ~0.25 ± 0.05 секунды (без учёта таймаутов на подключения к серверу брокера). Это делает скрипт отличным инструментом для активных трейдеров, работающих с большим количеством инструментов.

Как запустить сценарий

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

Все параметры для сетки ордеров настраиваются в двух конфигурационных файлах: config.yaml и secrets.yaml. Эти файлы должны находиться рядом со скриптом, в котором реализован сценарий установщика ордеров: TKSOrdersGridSetter.py. За что отвечают параметры конфигурации и шаги самого скрипта, подробно описано в комментариях в коде.

Требования

  • Python 3.9 или выше.
  • Установленные зависимости из файла requirements.txt.
  • API-токен от брокера Тинькофф Инвестиции (вида t.*****).
  • Идентификатор счёта (accountId) — его можно узнать используя команду платформы TKSBrokerAPI: tksbrokerapi --accounts или спросив у техподдержки брокера.
  • Токен и идентификатор должны быть сохранены в конфигурационном файле secrets.yaml.

Пошаговая инструкция

  • Клонируйте репозиторий:
git clone https://github.com/Tim55667757/TKSBrokerAPI.git
cd TKSBrokerAPI
  • Переключитесь на ветку develop:
git checkout -f develop
git pull
  • Перейдите в папку с примером:
cd ./docs/examples/OrdersGridSetter
  • Установите зависимости:
python3 -m pip install -r requirements.txt
  • Запустите скрипт (если используются дефолтные файлы конфигурации, то их можно не указывать в параметрах команды):
python3 TKSOrdersGridSetter.py config.yaml secrets.yaml

Подробности о настройках конфигурации, авторизации и описание основных методов в скрипте установщика ордеров можно найти в документации (раздел «Установщик сетки ордеров»).

Пример запуска

Если скрипт правильно сконфигурирован, то при запуске с текущими настройками вы увидите примерно следующий вывод в логах:

Пример лога работы скрипта «Установщик сетки ордеров»

На примере видно, что было запущено два конвейера, в каждом обрабатывалось по одной акции. Затем по каждой акции было выставлено 5 ордеров по ценам, соответствующим заданным параметрам. Цены были рассчитаны автоматически, с учётом текущей цены инструментов.

Стоит отметить, что скрипт «Установщик сетки ордеров» на базе платформы TKSBrokerAPI — это мощный инструмент для автоматизации торговли. Он позволяет быстро и точно выставлять ордера, экономя время и минимизируя ошибки. Если вы работаете с большим количеством инструментов, этот скрипт станет вашим незаменимым помощником.

Попробуйте платформу ⚙️ TKSBrokerAPI и сделайте свою торговлю более эффективной! 🚀

Платформа TKSBrokerAPI. Наш девиз: Технологии · Знания · Наука (Technologies · Knowledge · Science)

На этом всё, а если у вас появились вопросы по работе платформы TKSBrokerAPI, то вы можете задать их на GitHub в разделе 👉 Issues 👈 (также подписывайтесь на блог разработчиков: t.me/TKSBrokerAPI).

Успехов вам в автоматизации биржевой торговли! И профита! 🚀 😉✌️

⚙ Ссылка на проект: github.com/Tim55667757/TKSBrokerAPI
🎁 Поддержать проект: yoomoney.ru/to/410015019068268