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


Биржа Gate.io предлагает широкие возможности для анализа криптовалютных рынков, включая доступ к данным о ценах в реальном времени через WebSocket API. В этой статье рассмотрим, как с помощью Python создать приложение для подписки на тикеры всех торговых пар.
Биржа Gate.io предлагает широкие возможности для анализа криптовалютных рынков, включая доступ к данным о ценах в реальном времени через WebSocket API. В этой статье рассмотрим, как с помощью Python создать приложение для подписки на тикеры всех торговых пар.
Как это работает
- Инициализация: Создается объект класса Gate, который сразу запускает процесс подключения;
- Получение списка пар: Отправляется запрос к REST API для получения списка всех доступных спотовых торговых пар;
- Установка WebSocket-соединения: Устанавливается соединение с сервером WebSocket Gate.io;
- Подписка на пары: Формируется сообщение для подписки на обновления цен всех пар, которое отправляется на сервер;
- Получение данных: WebSocket передает данные о ценах, которые выводятся в консоль;
Код
# -*- 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()
Пример вывода
Установлено соединение 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 передает данные о ценах, которые выводятся в консоль;
Код
# -*- 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()
Пример вывода
Установлено соединение Web Socket
Пара: BTC_USDT, Цена: 56789.01
Пара: ETH_USDT, Цена: 4321.56
Пара: LTC_USDT, Цена: 123.45
Заключение
Этот скрипт демонстрирует, как с помощью WebSocket API и REST API автоматизировать получение данных о криптовалютных торговых парах. Такой подход позволяет оперативно получать актуальные данные о ценах, минимизируя задержки, что особенно полезно для трейдеров и аналитиков.