О технических особенностях алготрейдинга с использованием API

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

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

Вне зависимости от того, как пользователь взаимодействует с биржей (неважно, акции, криптовалюта или что угодно), все способы взаимодействия можно разделить на две категории: ручные или автоматические.

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

Ручное взаимодействие может быть удобно, если количество транзакций относительно невелико. Например, если я хочу купить биткойн (или акции Microsoft) на один день и держать его в течение длительного времени, лучший вариант — использовать веб-интерфейс или мобильное приложение.

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

Многие криптобиржи предлагают API-доступ к своим услугам. По моему опыту, около 110 из 220 активных бирж (согласно рыночная капитализация) поддерживает общедоступные API в той или иной форме. То есть вы можете автоматизировать торговлю на половине доступных криптобирж (но не на всех).

Существуют следующие типы API:

Почти все биржи, предлагающие поддержку доступа к API ОТДЫХ, но функциональность может сильно различаться от сайта к сайту. Обычно предоставляется базовый функционал операций (котировки, ордера, остатки). Что-то менее востребованное может быть или не быть доступным. Бывают ситуации, когда вы можете оформить заказ с помощью REST API, но не можете его отменить.

XBNFNM   Россия купит иностранные самолеты на сотни миллиардов

Многие биржи, помимо REST, также поддерживают протокол Веб-сокет. Вероятно, поскольку работа с этой технологией не такая простая и прозрачная, как с REST, функционал достаточно ограничен. Предложения WebSocket обычно доступны, но остальная функциональность присутствует не всегда. С другой стороны, на многих биржах весь набор функций на сайте реализуется через WebSocket API. В редких случаях функциональность WebSocket API шире, чем у REST.

Протокол ИСПРАВИТЬ возникла в NASDAQ и широко используется на фондовых рынках. Есть криптобиржи, поддерживающие этот протокол, но их очень мало, поэтому FIX рассматривать не будем.

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

Наличие документации API

Обычно, если у биржи есть публичный API, вы можете найти ссылку на документацию на сайте, обычно в футере. Однако в некоторых случаях ссылки может вообще не быть, что не обязательно означает отсутствие публичного API. В этом случае помогает поиск в Интернете по словам «имя биржи» + API. Также можно поискать документацию на GitHub — если она в принципе существует, то, скорее всего, там ее и найдут.

Неправильная документация по API

Иногда официальная документация не очень ясна или запутана. Примеры из моего опыта:

  • Отсутствуют необходимые методы (например, есть метод получения свечей по тиккеру, но нет метода получения списка тикеров)

  • Некоторые методы не имеют четкого описания параметров (например, метод получения свечи не указывает формат параметров временной метки «от» и «до»)

  • Все методы имеют подробное описание, но вместо реального URL вы видите заглушку, не имеющую отношения к обмену (например, конечная точка указана как https://openaipi.org)

XBNFNM   Эксперт рассказал об альтернативах коньяку из Армении на российском рынке

Возможные решения:

  • Попробуйте найти официальные (с биржи) депозитарии по адресу Гитхаб с реализацией API. Если доступно, это может помочь взглянуть на исходный код.

  • Попробуйте найти сторонние репозитории с реализацией API, там тоже могут быть подсказки

  • видеть ccxt — это большой проект с открытым исходным кодом, который поддерживает множество бирж. Он использует Python, JavaScript, C# и PHP и может быть очень полезен.

  • Если ничего не помогает, иногда можно догадаться об отсутствующей информации, подумав логически (пытаясь найти ответ на вопрос «как должно быть?»), или перебрав возможные варианты (например, можно выбрать формат метки времени параметры).

Документация в порядке, но сервер присылает что-то странное в ответ

Примеры:

  • Непонятная или недокументированная ошибка без дополнительных пояснений (ERROR_42 – о чем она?)

  • В ответ вы получаете ОК, но запрошенные данные отсутствуют (например, вы запросили массив огней, а получили в ответ сообщение “ОК” и вообще никаких огней, и даже не пустой массив)

  • Пустая строка в ответ («»)

Возможные решения:

  • Попробуйте обратиться в службу поддержки, подробно опишите проблему и попытайтесь ее решить. Скорость и качество ответа могут различаться, но попробовать стоит.

При размещении заказа вы получаете ответ “Этот тикер не поддерживается API”

Вероятно, это означает, что вы пытаетесь торговать новым инструментом, и хотя торговля полностью осуществляется через веб-сайт, этот инструмент еще не добавлен в API. Я пишу “вероятно”, потому что иногда я видел, что сообщение об ошибке содержало неверное описание проблемы, а причина ошибки была в чем-то другом.

Возможные решения:

Соединение WebSocket завершается с ошибкой 1006.

Хотя ошибка 1006 в RFC явно определен как зарезервированный на стороне клиента, на практике он часто используется для разрыва соединения на стороне сервера. Возможными причинами могут быть:

  • Отсутствие или некорректная реализация механизма пинг-понга (или сердцебиения) на стороне клиента

  • Вы пытаетесь получить слишком много данных, подписавшись на большое количество каналов (обычно такие лимиты не документируются, поэтому непонятно, на что можно, а на что нельзя подписываться)

XBNFNM   Криптофирма Quantstamp запускает новую услугу для предотвращения атак с использованием срочных кредитов – как это работает?

Возможные решения:

  • Правильно реализовать механизм пинг-понга (реализации варьируются от биржи к бирже)

  • Если вы делаете все по документации, но сервер все равно время от времени отключается, вы можете настроить клиент на переподключение при потере соединения.

Заключение

Последние 5 лет я активно занимаюсь алгоритмическим трейдингом. Возникло желание систематизировать и описать накопленный опыт. В этой статье мы углубились в некоторые технические аспекты алготрейдинга через API. Мы рассмотрели различные типы API и обсудили технические проблемы, которые могут возникнуть при взаимодействии с криптобиржами. В следующих статьях я планирую рассказать о нескольких конкретных проектах, и об особенностях поведения бирж.

Хотелось бы обсудить технические детали, а также особенности автоматизации работы с конкретными биржами.

Source