Поддержание книги заявок в реальном времени по обновлениям WebSocket
Сводка
В примере описан клиент WebSocket, который подключается к бирже деривативов, проходит аутентификацию, подписывается на общедоступные потоки книги заявок и после аутентификации запрашивает закрытые потоки, связанные со счётом. Рабочий цикл получает сообщения, вызывает обработчики событий и переподключается после сбоев сокета; отдельный поток периодически отправляет ping-кадры. Пример хранит уровни спроса и предложения в словарях, ключами которых служат идентификаторы заявок, и обновляет их при получении частичных снимков, добавлений, изменений и удалений.
После каждого сообщения книги заявок заявки на покупку сортируются от наибшей цены к наименьшей, а заявки на продажу — от наименьшей к наибольшей. Затем до пяти уровней цен и объёмов копируются в структуру, похожую на тик. Это простой пример поддержки и отображения книги заявок в реальном времени. В нём нет измерений задержки, торговых сигналов или результатов исполнения; также во фрагменте не описаны упорядочивание сообщений и механизмы восстановления после пропуска обновлений. Зашитые в код значения для аутентификации делают пример непригодным для прямого развёртывания.
Ключевые идеи
- Клиент проходит аутентификацию через WebSocket перед подпиской на закрытые потоки.
- Один рабочий поток получает сообщения и переподключается при ошибках сокета, а другой периодически отправляет ping-запросы.
- Снимки книги заявок и инкрементальные сообщения обновляют словари уровней заявок на покупку и продажу, где ключами служат идентификаторы заявок.
- Пять лучших уровней выбираются после сортировки заявок на покупку по убыванию цены, а на продажу — по возрастанию.
- В примере нет данных о результатах; не рассматриваются восстановление после пропусков обновлений и безопасное хранение учётных данных.
Теги
Материал из частной учебной коллекции; оригинал не опубликован.