Prism
Высоконадежный сервис для доступа к множеству бирж криптовалют по единому унифицированному API.
Prism используется институциональными и HFT трейдерами, брокерами, биржами и другими участниками рынка для подключения своих решений к торговле криптовалютами. Данный сервис использует стандартизованный биржевой протокол FIX, что позволяет использовать существующие торговые платформы с минимальными затратами на интеграцию. Предусмотрен также полнофункциональный RESTFul+WebSockets протокол.
Говоря кратко, Prism – это в точности то, каким должен быть программный интерфейс для доступа к криптовалютной торговле!
Какие сложности несет многообразие рынка криптовалют
Благодаря принципам децентрализованности и распределенного доверия, криптовалюты позволили создавать торговые площадки, совмещающие в себе одновременно как функции брокера, так и клиринговой организации. Исчезла необходимость выстраивать цепочку доверенных лиц и организовывать стандартные протоколы взаимодействия. Тем самым, это привело к росту числа различных криптовалютных бирж с множеством торговых функций и великим разнообразием нестандартных программных интерфейсов.
Фрагментация
Ликвидность рынка криптовалют довольно высока и растет с каждым днем, вместе с тем растет и количество бирж. Чтобы обеспечить хорошие объемы сделок, либо охватить множество различных alt-coins необходимо проделать очень большую работу по интеграции с каждой из них.
Web и публичный доступ
Наиболее распространенным подходом к организации программного интерфейса для криптовалютных бирж является WebAPI в виде отдельных RESTFul запросов. Получение обновлений рыночных данных, как правило, также осуществляется RESTFul запросами. Реже – используя потоковые (push) данные WebSockets. Это неизбежно приводит к тому, что количество запросов к бирже растет. Биржи вводят ограничения по количеству транзакций за единицу времени. Это может добавлять сложности для реализации разного рода торговых алгоритмов, в особенности связанных со сделками арбитража либо сделками на исполнение больших объемов.
Для защиты от возможных DDoS атак, биржи предоставляют WebAPI не напрямую, а через сервисы фильтрации запросов. Каждый запрос проходит процедуру аутентификации и маршрутизируется на процессинговый сервис биржи. Это вносит дополнительные задержки при выполнении транзакций.
Слабая устойчивость к сбоям
Отдельного внимания заслуживает проблема устойчивости к сбоям, так как WebAPI не вносит никакой функциональности, направленной на поддержание транзакционной целостности. API криптовалютных бирж подвержены разного рода ситуациям, когда транзакция исполняется не полностью и становится крайне сложно вычислить ее состояние. Например, вы отсылаете RESTFul запрос на постановку заявки, затем соединение разрывается, и вы не получаете ответа о результате выполнения этой операции биржей. В такой момент не известно состояние вашей заявки - возможно она выставлена в рынок, но возможно не принята биржей.
Доступность
В большинстве своем, криптовалютные биржи работают без перерывов на клиринг 24/7, тем не менее простои также не редкость. Часто WebAPI бирж может быть отключен по причине обслуживания или сбоев на рынке.
Как Prism меняет ситуацию
Единый интерфейс
Prism реализует единый стандартизованный протокол FIX 4.4 для доступа ко всем криптовалютным биржам. Данный протокол является устоявшимся стандартом для биржевых операций, включает себя все необходимые функции для осуществления торговых операций.
Мы предоставляем полноценную реализацию этого протокола с наиболее полной поддержкой вариантов транзакций и типов биржевых заявок.
Через Prism доступны следующие типы заявок:
- LIMIT — присутствует на рынке и видна в книге заявок до момента исполнения
- HIDDEN — не видна в книге заявок, исполняется, как только в книге заявок появляется кросс-цена
- STOP — заявка исполняется, как только уровень цены достиг заданного stop условия
- MARKET — исполняется по текущему доступному объёму
- IOC — исполняется частично, либо полностью, если есть кросс-цены в книге заявок и сразу отменяется
- FOK — исполняется только если в книге заявок есть кросс-цены с достаточным объемом
- Алгоритмические заявки — Market Order Router, VWAP, Iceberg
Для заявок типа MARKET, IOC, FOK автоматически выбирается наиболее ликвидный рынок для данной валютной пары, если не задан конкретный рынок.
Если API какой-то из бирж не поддерживает той или иной тип заявки, то мы берем работу на себя и производим внутреннюю эмуляцию.
Через систему Prism доступен полный набор операций над заявками – PLACE, MOVE, CANCEL. Даже если какая-то из бирж не поддерживает MOVE, мы безопасно осуществляем это внутри системы.
Защищенный доступ и высокая скорость отклика
Для доступа к сервису используется защищенный канал и фиксированный сетевой адрес. Подключение клиента осуществляется в изолированной среде, что исключает любую дополнительную нагрузку со стороны.
FIX протокол базируется на протоколе TCP, минуя заголовки HTTP. Это позволяет получать данные в виде потока без периодического опроса сервера. Нет необходимости проходить аутентификацию на каждый запрос к серверу, это делается единожды при установлении соединения. Геопозиция серверов Prism выбирается таким образом, чтобы минимизировать время отклика от наиболее важных бирж.
Запросы к биржам делятся на типы:
Публичные — для получения информации, не связанной с учетной записью пользователя. Например, чтении книги заявок, или всех совершенных на бирже сделок. Для повышения отклика Prism использует кэширование публичных запросов и переброс запросов на внутренние proxy сервера. Что дает возможность увеличить число обращений к биржам и частоту обновления данных. Через Prism вы видите более актуальные цены в книге заявок, чем если бы вы напрямую использовали API конкретной биржи.
Приватные — для исполнения транзакций. Например, работа с заявками, ввод и вывод средств на депозит. Такие запросы требуют цифровую подпись владельца учетной записи используя API ключ, выданный биржей.
Prism не хранит ключи для исполнения приватных запросов. Подпись внутренних сообщений к бирже происходит на стороне клиента, использую ПО с открытым кодом. Это исключает любые незатребованные операции с ключами и дает возможность клиенту отозвать ключ в любой момент.
Если клиент опасается хранить ключи у себя, возможен режим хранения зашифрованных ключей на серверах Prism. В этом случае подпись транзакций осуществляется на стороне сервера, и клиент не принимает в этом участие. Могут быть установлены ограничения на операции по данным ключам, например – запрет на ввод или вывод валюты.
Устойчивость к сбоям
Внутренняя архитектура системы устроена таким образом, что при возникновении проблем на одной из бирж, например, превышение максимального количества транзакций в секунду происходит переключение на другую биржу. При большом количестве доступных бирж, это минимизирует проблему доступности.
Протокол FIX решает проблемы восстановления после сбоев путем ресинхронизации сообщений после подключения. Если соединение было прервано в виду нештатной ситуации, сторона клиента всегда сможет получить утерянные сообщения. А состояние заявок всегда можно проверить, используя собственный идентификатор заявки
(ClOrderId).
Prism осуществляет постоянный контроль консистентности заявок, используя для этого ряд общих для всех бирж алгоритмов:
- При обрыве связи с биржей в момент постановки заявки, автоматически проверяет состояние активных заявок. Выявляет появление новой заявки на бирже используя внутренний идентификатор. В случае, если заявка выставилась биржей, для клиента это выглядит абсолютно прозрачно - он получает подтверждение об успешном выставлении заявки.
- Отслеживание внутреннего состояние собственных заявок. В режиме реального времени клиенту доступны все обновления, связанные с изменением статуса заявок – отмена заявки, модификация, частично либо полное исполнение.
- Отслеживает наличие незатребованных заявок (опционально). Если для выбранной учетной записи в списке активных заявок обнаруживается LIMIT заявка, которой нет в системе, то данная заявка автоматически отменяется.
Доступность 24/7
Клиент работает с сервисом используя собственное подключение. Система работает в изолированной среде, используя специально выделенные для клиента ресурсы. В случае, если одна из бирж перестала отвечать, транзакции переводятся на другую биржу. Алгоритмические заявки осуществляют переброс объемов в автоматическом режиме.
Margin trading
Торговля с плечом доступна через биржи, которые поддерживают маржинальную торговлю. В данный момент доступно плечо до 3х на биржах Bitfinex и Poloniex для наиболее ликвидных валютных пар.
Аудит
Детальная информация о совершенных через систему Prism транзакциях доступна в полном объеме. Данные можно извлечь через API системы, либо запросить в виде текстовых файлов. Совершенные сделки также можно получать по протоколу FIX Drop Copy.
Спецификации
Мы предоставляем два вида API – классическое биржевое API используя протокол FIX 4.4 либо WebAPI для клиентов, кто ранее работали напрямую с критовалютной биржей.
Список поддерживаемых бирж
Exchange name | Market data | Trading |
---|---|---|
Binance | ||
Bitfinex | ||
Poloniex | ||
Bittrex | ||
Kraken | ||
Deribit | ||
BitMEX |
Exchange name | Market data | Trading |
---|---|---|
OasisDEX | ||
BancorDEX | ||
KyberDEX | ||
UniswapDEX | ||
HitBTC | ||
KuCoin | ||
bitFlyer |