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


Получайте актуальные цены с Binance и отправляйте данные в Telegram. Мониторьте рынок криптовалют в реальном времени!
Для отправки данных о ценах в Telegram канал нам необходимо создать бота в Telegram и настроить его для отправки сообщений. Сначала мы должны получить токен бота и ID чата, в который будут отправляться сообщения. Затем мы можем использовать библиотеку telebot в Python для взаимодействия с API Telegram и отправки сообщений в канал.
#-*- 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).
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 и отправки сообщений в канал.
#-*- 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).
pip install pyTelegramBotAPI
pip install websocket-client
- tg_token: токен telegram бота.
- chatId: id чата, в которой будут отправляться уведомления.
- percent: процент изменения цены. (На сколько цена должна измениться, для отправки уведомления.)
- interval_time: частота проверки изменения цены.
- trading_pairs_check: торговые пары для мониторинга (Если массив пустой, то все торговые пары).
Заключение
В этой статье мы рассмотрели, как использовать WebSocket для получения актуальных цен с биржи Binance и отправки разницы между ценами в Telegram канал. Это позволяет трейдерам быть в курсе изменений на рынке криптовалют в реальном времени, что является ключевым фактором для принятия обоснованных торговых решений. Совместное использование WebSocket и Telegram API позволяет создать мощный инструмент для мониторинга цен на рынке криптовалют и своевременного реагирования на изменения.