Получение данных о торговых парах с биржи Gate через WebSocket на Python

GetCoder.ru
Изображение статьи

Биржа Gate.io предлагает широкие возможности для анализа криптовалютных рынков, включая доступ к данным о ценах в реальном времени через WebSocket API. В этой статье рассмотрим, как с помощью Python создать приложение для подписки на тикеры всех торговых пар.

Биржа Gate.io предлагает широкие возможности для анализа криптовалютных рынков, включая доступ к данным о ценах в реальном времени через WebSocket API. В этой статье рассмотрим, как с помощью Python создать приложение для подписки на тикеры всех торговых пар.

Как это работает

  • Инициализация: Создается объект класса Gate, который сразу запускает процесс подключения;
  • Получение списка пар: Отправляется запрос к REST API для получения списка всех доступных спотовых торговых пар;
  • Установка WebSocket-соединения: Устанавливается соединение с сервером WebSocket Gate.io;
  • Подписка на пары: Формируется сообщение для подписки на обновления цен всех пар, которое отправляется на сервер;
  • Получение данных: WebSocket передает данные о ценах, которые выводятся в консоль;

Код

  • copy
# -*- coding: utf-8 -*- import websocket, requests, json, time class Gate(): def __init__(self): try: self.start() except Exception as e: print(e) # Список всех торговых пар def symbols_list(self): try: result = [] url = "https://api.gateio.ws/api2/1/pairs" response = requests.get(url) if response.status_code == 200: result = response.json() except Exception as e: print(e) result = [] return result # Данные от сокета def on_message(self, ws, message): data = json.loads(message) if "result" in data and "currency_pair" in data['result']: print(f"Пара: {data['result']['currency_pair']}, Цена: {data['result']['last']}") # Выключения сокета def on_error(self, ws, error): print(error) ws.close() def on_open(self, ws): print(u'Установлено соединение Web Socket') data = { "time": int(time.time()), "channel": "spot.tickers", "event": "subscribe", "payload": self.symbols_list(), } subscription_message = json.dumps(data) ws.send(subscription_message) def start(self): while True: try: wss = 'wss://api.gateio.ws/ws/v4/' wsa = websocket.WebSocketApp(wss, on_open = self.on_open, on_message = self.on_message, on_error = self.on_error) wsa.run_forever() raise Exception(u'Разрыв соединения Web Socket') except Exception as e: print(str(e)) time.sleep(5) if __name__ == "__main__": Gate()
Исходный код

Пример вывода

  • copy
Установлено соединение Web Socket Пара: BTC_USDT, Цена: 56789.01 Пара: ETH_USDT, Цена: 4321.56 Пара: LTC_USDT, Цена: 123.45

Заключение

Этот скрипт демонстрирует, как с помощью WebSocket API и REST API автоматизировать получение данных о криптовалютных торговых парах. Такой подход позволяет оперативно получать актуальные данные о ценах, минимизируя задержки, что особенно полезно для трейдеров и аналитиков.

  • 01.12.2024
  • 48
  • 0

Получение данных о торговых парах с биржи Gate через WebSocket на Python

Биржа Gate.io предлагает широкие возможности для анализа криптовалютных рынков, включая доступ к данным о ценах в реальном времени через WebSocket API. В этой статье рассмотрим, как с помощью Python создать приложение для подписки на тикеры всех торговых пар.

Как это работает

  • Инициализация: Создается объект класса Gate, который сразу запускает процесс подключения;
  • Получение списка пар: Отправляется запрос к REST API для получения списка всех доступных спотовых торговых пар;
  • Установка WebSocket-соединения: Устанавливается соединение с сервером WebSocket Gate.io;
  • Подписка на пары: Формируется сообщение для подписки на обновления цен всех пар, которое отправляется на сервер;
  • Получение данных: WebSocket передает данные о ценах, которые выводятся в консоль;

Код

  • copy
# -*- coding: utf-8 -*- import websocket, requests, json, time class Gate(): def __init__(self): try: self.start() except Exception as e: print(e) # Список всех торговых пар def symbols_list(self): try: result = [] url = "https://api.gateio.ws/api2/1/pairs" response = requests.get(url) if response.status_code == 200: result = response.json() except Exception as e: print(e) result = [] return result # Данные от сокета def on_message(self, ws, message): data = json.loads(message) if "result" in data and "currency_pair" in data['result']: print(f"Пара: {data['result']['currency_pair']}, Цена: {data['result']['last']}") # Выключения сокета def on_error(self, ws, error): print(error) ws.close() def on_open(self, ws): print(u'Установлено соединение Web Socket') data = { "time": int(time.time()), "channel": "spot.tickers", "event": "subscribe", "payload": self.symbols_list(), } subscription_message = json.dumps(data) ws.send(subscription_message) def start(self): while True: try: wss = 'wss://api.gateio.ws/ws/v4/' wsa = websocket.WebSocketApp(wss, on_open = self.on_open, on_message = self.on_message, on_error = self.on_error) wsa.run_forever() raise Exception(u'Разрыв соединения Web Socket') except Exception as e: print(str(e)) time.sleep(5) if __name__ == "__main__": Gate()
Исходный код

Пример вывода

  • copy
Установлено соединение Web Socket Пара: BTC_USDT, Цена: 56789.01 Пара: ETH_USDT, Цена: 4321.56 Пара: LTC_USDT, Цена: 123.45

Заключение

Этот скрипт демонстрирует, как с помощью WebSocket API и REST API автоматизировать получение данных о криптовалютных торговых парах. Такой подход позволяет оперативно получать актуальные данные о ценах, минимизируя задержки, что особенно полезно для трейдеров и аналитиков.