Торговый алгоритм на Python для API TWS от Interactive Brokers: начало

Данной статьей мы открываем серию материалов по использованию API от брокера Interactive Brokers и написанию простых торговых алгоритмов, в которых будет задействован Trader Workstation.

В отличие от тысяч других мануалов данная серия статей проведет вас от самого начала, показав как ставить все программное окружение на машину, до логического завершения — готового алгоритма.

Данная статья является вступлением ко всей серии. В ней мы познакомимся с TWS, с его API, определим как их использовать в наших приложениях на Python3 и посмотрим на статьи в предстоящей серии.

Что такое Trader Workstation?

Trader Workstation (далее TWS) — это терминал, разработанный брокером Interactive Brokers (далее IB).

Терминал написан на языке Java и работает на всех востребованных операционных системах. На странице загрузки вы можете найти версии для Windows, macOS, Linux. Есть даже варианты для мобильных устройств.

Cамое важное в TWS — это то, что он поддерживает сокетное подключение, благодоря которому можно обращаться к нему из своего собственного приложения. Для этих целей специалисты IB разработали Trader Workstation API на языке Python3.

Что такое Trader Workstation API (или IB API)?

Trader Workstation Application Programming Interface (или как его еще называют Python-разработчики — IB API) — это библиотека для интерпретатора Python3, содержащая в себе целый комплекс пакетов для решения разных задач.

Данная библиотека очень большая и, чтобы помочь разработчикам Python3 в её освоении, IB создал документацию, содержание которого разбито на разделы под определенные типы задачи.

В этой серии статей мы опишем как применять данное API, чтобы грамотно коммуницировать с TWS.

Как использовать API и TWS в вашем приложении?

При написании любого кода, задействующего TWS, всегда применяются 3 базовых элемента:

  • ваше приложение — ваш торговый алгоритм на Python3.
  • TWS — сам терминал — источник данных и исполнитель торговых приказов.
  • IB API — посредник между вашим алгоритмом и TWS.

Какой бы торговый алгоритм вы ни создавали на Python3, эти три элемента всегда должны быть в вашей голове. Теперь рассмотрим поближе взаимодействие с API.

Суть разработки любого приложения будет сводиться к импортированию модулей из IB API и работой с отдельным модулем для решения конкретной задачи. В каждом случае отдельный модуль — это отдельный класс, с объектом которого и надо будет работать.

Как упомянулось выше, библиотека IB API очень большая и содержит большое количество модулей, но среди такого широкого и пестрого разнообразия есть два обязательных класса:

  • класс EClient
  • класс EWrapper

Объект класса EClient, судя по названию, является клиентом. У него сразу несколько ролей. Прежде всего, он устанавливает сокетное подключение с TWS. Далее направляет ему запросы и принимает от него ответы. В конце концов, он заставляет работать объект класса EWrapper

Объект класса EWrapper служит обработчиком поступивших сообщений от TWS. Обращаю ваше внимание, что он всего лишь обрабатывает сообщения. С этим объектом, точнее с его классом, у нас будет больше всего работы.

Этих двух классов будет достаточно, чтобы организовать подключение с TWS и получить так называемые «первичные сообщения» от терминала. Для более сложной работы с TWS понадобится помощь других модулей и классов IB API. В дальнейших статьях это будет раскрыто подробнее.

Подробнее о статьях в этой серии

Каждая статья условно будет разбита на 3 части в следующем порядке:

  • теоретическая часть
  • код приложения
  • описание кода или процессов, протекающих при выполнении кода

При этом материал от статьи к статье будет усложняться. В самой первой статье будет поверхностное описание технической части и элементарный код не более 10 строчек.

В самой последней статье будет сложный обзор отдельных классов API в технической части и код, формирующий сложную иерархию классов с наследованием, причем объекты этих классов будут использовать как многопоточность (threading), так и очереди (queue) в своей работе.

Каждая статья из этой серии будет представлять собой решение той или иной задачи с участием TWS. Для решения отдельной задачи будут применятся обязательные классы EClient и EWrapper плюс отдельно взятые классы API, необходимые для решения конкретной задачи.

Примерный перечень статей:

Заключение

Данная статья открывает тему о том, как создавать свои торговые алгоритмы на Python3 с участием терминала от Interactive Brokers.

В ней мы познакомились с терминалом Trader Workstation и его API. Немного разобрали взаимодействие с терминалом и какими инструментами надо пользоваться для организации этого взаимодействия. Также определились со строением будущих статей и посмотрели примерный перечень тем, который будет открыт в этой серии статей.

Давайте переходить от слов к делу. Начнем с установки и настройки.

Автор: Олег Минаев