Быстрый мониторинг цен на Binance с отправкой в Telegram

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

Получайте актуальные цены с Binance и отправляйте данные в Telegram. Мониторьте рынок криптовалют в реальном времени!

Для отправки данных о ценах в Telegram канал нам необходимо создать бота в Telegram и настроить его для отправки сообщений. Сначала мы должны получить токен бота и ID чата, в который будут отправляться сообщения. Затем мы можем использовать библиотеку telebot в Python для взаимодействия с API Telegram и отправки сообщений в канал.

  • copy
#-*- coding: UTF-8 -*- import time, websocket, json, threading, telebot class binance(): def __init__(self): self.ticker_socket = [] # Выключения сокета def on_error(self, _wsa, wsData): _wsa.close() # Данные от сокета def on_message(self, _wsa, wsData): mData = json.loads(wsData) self.ticker_socket = mData # Запуск сокета def run_web_sock(self): while True: try: wss = 'wss://stream.binance.com:9443/ws/!ticker@arr' wsa = websocket.WebSocketApp(wss, on_message = self.on_message, on_error = self.on_error) print(u'Установлено соединение Web Socket') wsa.run_forever() raise Exception(u'Разрыв соединения Web Socket') except Exception as e: print(str(e)) time.sleep(10) # Старт def start(self): ws = threading.Thread(target=self.run_web_sock) ws.setDaemon(True) ws.start() class main(): def __init__(self, mData): self.bot = telebot.TeleBot(mData['tg_token'], skip_pending = True); self.chatId = mData['chatId'] self.percent = mData['percent'] self.interval_time = mData['interval_time'] self.trading_pairs_check = mData['trading_pairs_check'] self.start() def start(self): try: # Инициализация класса / запуск потока wb = binance() wb.start() self.trading_pairs = {} while True: time.sleep(self.interval_time) # Проверка изменения цены self.send_info = {} for item in wb.ticker_socket: if len(self.trading_pairs_check) == 0 or item['s'] in self.trading_pairs_check: if item['s'] not in self.trading_pairs: self.trading_pairs[item['s']] = item['c'] continue percentage_change = ((float(item['c']) - float(self.trading_pairs[item['s']])) / float(self.trading_pairs[item['s']])) * 100 if percentage_change >= self.percent: position = '\U0001F7E2' if item['c'] > self.trading_pairs[item['s']] else '\U0001F534' rounded_number = round(percentage_change, 2) self.send_info[item['s']] = {'price': self.trading_pairs[item['s']], 'new_price': item['c'], 'percentage_change': rounded_number, 'position': position} self.trading_pairs[item['s']] = item['c'] # Отправка данных в ТГ if len(self.send_info) > 0: self.send_message() except Exception as e: print(str(e)) # Отправка данных в ТГ def send_message(self): msg_str = '' for key_item, item in self.send_info.items(): rz = '' if msg_str == '' else '\n' msg_str += rz+item['position']+' '+key_item+'\nЦена: '+str(item['price'])+'\nНовая цена: '+str(item['new_price'])+'\nПроцентное изменение: '+str(item['percentage_change'])+'%\n' self.bot.send_message(self.chatId, msg_str) if __name__ == "__main__": mData = { 'tg_token': 'YOUR_TELEGRAM_BOT_TOKEN', # Токен ТГ бота 'chatId': 'YOUR_TELEGRAM_CHAT_ID', # Id чата 'percent': 0.5, # Процент изменения цены 'interval_time': 5, # Интервал проверки цены (в секундах) 'trading_pairs_check': {'LTCUSDT': True} # Торговые пары (Если пустой массив, то все торговые пары) } main(mData)

Принцип работы

  • Установка WebSocket и получение данных с биржи Binance:
    - Код устанавливает соединение с WebSocket биржи Binance для получения актуальных цен на торговые монеты.
    - При установлении соединения, код начинает прослушивать события WebSocket и обновляет информацию о ценах в реальном времени.
    - Полученные данные о ценах сохраняются в переменной ticker_socket.
  • Настройка Telegram бота и отправка данных:
    - Код создает экземпляр класса Main, который инициализирует Telegram бота и настраивает параметры для отправки сообщений.
    - Параметры бота, такие как токен и ID чата, передаются в конструктор класса для инициализации бота и настройки отправки сообщений.
    - После настройки бота, код запускает бесконечный цикл, в котором данные о ценах проверяются с заданной периодичностью.
  • Отправка данных о разнице цен в Telegram канал:
    - При каждой итерации цикла код проверяет разницу между текущими и предыдущими ценами на торговые монеты.
    - Если процентное изменение цены превышает установленный порог, код формирует сообщение о разнице цен и отправляет его в Telegram канал.
    - Сообщение содержит информацию о торговой паре, старой и новой цене, процентном изменении и позиции (повышение или понижение цены).

Инструкция по использованию

Убедитесь, что у вас установлен Python и необходимые библиотеки (websocket-client, pyTelegramBotAPI).

  • copy
pip install pyTelegramBotAPI pip install websocket-client
  • tg_token: токен telegram бота.
  • chatId: id чата, в которой будут отправляться уведомления.
  • percent: процент изменения цены. (На сколько цена должна измениться, для отправки уведомления.)
  • interval_time: частота проверки изменения цены.
  • trading_pairs_check: торговые пары для мониторинга (Если массив пустой, то все торговые пары).

Заключение

В этой статье мы рассмотрели, как использовать WebSocket для получения актуальных цен с биржи Binance и отправки разницы между ценами в Telegram канал. Это позволяет трейдерам быть в курсе изменений на рынке криптовалют в реальном времени, что является ключевым фактором для принятия обоснованных торговых решений. Совместное использование WebSocket и Telegram API позволяет создать мощный инструмент для мониторинга цен на рынке криптовалют и своевременного реагирования на изменения.

  • 17.03.2024
  • 33
  • 0

Быстрый мониторинг цен на Binance с отправкой в Telegram

Для отправки данных о ценах в Telegram канал нам необходимо создать бота в Telegram и настроить его для отправки сообщений. Сначала мы должны получить токен бота и ID чата, в который будут отправляться сообщения. Затем мы можем использовать библиотеку telebot в Python для взаимодействия с API Telegram и отправки сообщений в канал.

  • copy
#-*- coding: UTF-8 -*- import time, websocket, json, threading, telebot class binance(): def __init__(self): self.ticker_socket = [] # Выключения сокета def on_error(self, _wsa, wsData): _wsa.close() # Данные от сокета def on_message(self, _wsa, wsData): mData = json.loads(wsData) self.ticker_socket = mData # Запуск сокета def run_web_sock(self): while True: try: wss = 'wss://stream.binance.com:9443/ws/!ticker@arr' wsa = websocket.WebSocketApp(wss, on_message = self.on_message, on_error = self.on_error) print(u'Установлено соединение Web Socket') wsa.run_forever() raise Exception(u'Разрыв соединения Web Socket') except Exception as e: print(str(e)) time.sleep(10) # Старт def start(self): ws = threading.Thread(target=self.run_web_sock) ws.setDaemon(True) ws.start() class main(): def __init__(self, mData): self.bot = telebot.TeleBot(mData['tg_token'], skip_pending = True); self.chatId = mData['chatId'] self.percent = mData['percent'] self.interval_time = mData['interval_time'] self.trading_pairs_check = mData['trading_pairs_check'] self.start() def start(self): try: # Инициализация класса / запуск потока wb = binance() wb.start() self.trading_pairs = {} while True: time.sleep(self.interval_time) # Проверка изменения цены self.send_info = {} for item in wb.ticker_socket: if len(self.trading_pairs_check) == 0 or item['s'] in self.trading_pairs_check: if item['s'] not in self.trading_pairs: self.trading_pairs[item['s']] = item['c'] continue percentage_change = ((float(item['c']) - float(self.trading_pairs[item['s']])) / float(self.trading_pairs[item['s']])) * 100 if percentage_change >= self.percent: position = '\U0001F7E2' if item['c'] > self.trading_pairs[item['s']] else '\U0001F534' rounded_number = round(percentage_change, 2) self.send_info[item['s']] = {'price': self.trading_pairs[item['s']], 'new_price': item['c'], 'percentage_change': rounded_number, 'position': position} self.trading_pairs[item['s']] = item['c'] # Отправка данных в ТГ if len(self.send_info) > 0: self.send_message() except Exception as e: print(str(e)) # Отправка данных в ТГ def send_message(self): msg_str = '' for key_item, item in self.send_info.items(): rz = '' if msg_str == '' else '\n' msg_str += rz+item['position']+' '+key_item+'\nЦена: '+str(item['price'])+'\nНовая цена: '+str(item['new_price'])+'\nПроцентное изменение: '+str(item['percentage_change'])+'%\n' self.bot.send_message(self.chatId, msg_str) if __name__ == "__main__": mData = { 'tg_token': 'YOUR_TELEGRAM_BOT_TOKEN', # Токен ТГ бота 'chatId': 'YOUR_TELEGRAM_CHAT_ID', # Id чата 'percent': 0.5, # Процент изменения цены 'interval_time': 5, # Интервал проверки цены (в секундах) 'trading_pairs_check': {'LTCUSDT': True} # Торговые пары (Если пустой массив, то все торговые пары) } main(mData)

Принцип работы

  • Установка WebSocket и получение данных с биржи Binance:
    - Код устанавливает соединение с WebSocket биржи Binance для получения актуальных цен на торговые монеты.
    - При установлении соединения, код начинает прослушивать события WebSocket и обновляет информацию о ценах в реальном времени.
    - Полученные данные о ценах сохраняются в переменной ticker_socket.
  • Настройка Telegram бота и отправка данных:
    - Код создает экземпляр класса Main, который инициализирует Telegram бота и настраивает параметры для отправки сообщений.
    - Параметры бота, такие как токен и ID чата, передаются в конструктор класса для инициализации бота и настройки отправки сообщений.
    - После настройки бота, код запускает бесконечный цикл, в котором данные о ценах проверяются с заданной периодичностью.
  • Отправка данных о разнице цен в Telegram канал:
    - При каждой итерации цикла код проверяет разницу между текущими и предыдущими ценами на торговые монеты.
    - Если процентное изменение цены превышает установленный порог, код формирует сообщение о разнице цен и отправляет его в Telegram канал.
    - Сообщение содержит информацию о торговой паре, старой и новой цене, процентном изменении и позиции (повышение или понижение цены).

Инструкция по использованию

Убедитесь, что у вас установлен Python и необходимые библиотеки (websocket-client, pyTelegramBotAPI).

  • copy
pip install pyTelegramBotAPI pip install websocket-client
  • tg_token: токен telegram бота.
  • chatId: id чата, в которой будут отправляться уведомления.
  • percent: процент изменения цены. (На сколько цена должна измениться, для отправки уведомления.)
  • interval_time: частота проверки изменения цены.
  • trading_pairs_check: торговые пары для мониторинга (Если массив пустой, то все торговые пары).

Заключение

В этой статье мы рассмотрели, как использовать WebSocket для получения актуальных цен с биржи Binance и отправки разницы между ценами в Telegram канал. Это позволяет трейдерам быть в курсе изменений на рынке криптовалют в реальном времени, что является ключевым фактором для принятия обоснованных торговых решений. Совместное использование WebSocket и Telegram API позволяет создать мощный инструмент для мониторинга цен на рынке криптовалют и своевременного реагирования на изменения.