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

Секрет заключается в связи через веб-сокеты, при которой передаются данные с высокой точностью. Например, в потоке данных веб-сокета мы можем получить данные о реальных сделках, Klines (см.: https://medium.com/@gabriele.deri/how-to-download-trading-data-from-binance-with-python- 21634af30195) или даже стакан для определенного символа.

Мы будем использовать python и клиент websocket для подключения к потокам Binance Websocket. То же самое относится и к другим криптобиржам, просто измените конечную точку и значения полезной нагрузки сообщения.

Вы можете прочитать конечные точки веб-сокетов для спота, фьючерса или маржи в документе биржи здесь: https://binance-docs.github.io/apidocs/spot/en/#websocket-market-streams.

Сначала давайте установим клиент веб-сокета с помощью pip

pip3 install websocket-client

Затем мы получим конечную точку веб-сокета из документов и получим данные о совершенных сделках определенного символа. В этом примере я буду использовать торговый поток ETHUSDT. Имейте в виду, что торговые символы должны быть вставлены в путь веб-сокета строчными буквами, а не прописными, как в запросах REST.

Просто вызовите функцию ws_trade() как обычную функцию, и wsapp.run_forever() обработает все входящие сообщения от Binance и отобразит сообщение.

Я также создал функцию handle_trades() для преобразования полученного json в более читаемое сообщение. Значение каждого ключа в полученном объекте можно прочитать в общедоступных документах Binance. Функция также преобразует Эпоху в дату. Здесь я помещу образец png из моего терминала

Я надеюсь, что эта статья была хоть как-то полезна. Не стесняйтесь запрашивать дополнительную информацию, если это необходимо, и оставляйте предложения для публикации будущих статей!