Возникли проблемы с потоковой передачей данных Kline в реальном времени в моем кодеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Возникли проблемы с потоковой передачей данных Kline в реальном времени в моем коде

Сообщение Anonymous »

Я работаю над проектом, в котором я передаю в реальном времени данные свечей (kline) из binance с помощью WebSockets, но у меня возникла проблема, и мне нужна была бы помощь.
Я использую twm для управления своими WebSocket-соединения. Запускаю менеджер и настраиваю сокеты для нескольких символов с определенным интервалом.

Код: Выделить всё

twm = ThreadedWebsocketManager() twm.start() for symbol in SYMBOLS: twm.start_kline_futures_socket(callback=stream_candles, symbol=symbol, interval=INTERVAL)
В функцииstream_candles, если свеча закрылась, я удаляю самую старую строку в кадре данных и добавляю новую строку.

Код: Выделить всё

def stream_candles(msg):

symbol = msg['ps']
if symbol not in SYMBOLS:
return
df = symbol_data[symbol]

kline = msg['k']
end_time = pd.to_datetime(kline['T'], unit='ms')
open_price = float(kline['o'])
high_price = float(kline['h'])
low_price = float(kline['l'])
close_price = float(kline['c'])
volume = float(kline['v'])
is_closed = kline['x']

new_row = {
'Local time': end_time,
'open': open_price,
'high': high_price,
'low': low_price,
'close': close_price,
'volume': volume
}

if is_closed:
df = df.iloc[1:].reset_index(drop=True)
df.loc[len(df)] = new_row
symbol_data[symbol] = df
trade(symbol)
Проблемы:
Дубликаты или очень похожие данные свечей:
Когда поступают новые данные свечей, цены открытия, максимум и минимум либо одинаковы, либо очень близки к значениям предыдущей свечи. Это не совпадение, это происходит каждый раз.
Отложенные обновления Candle:
Каждый раз, когда я останавливаю и перезапускаю программу, первые текущие данные, которые я получаю, та же проблема.
После этого живые данные всегда отстают на одну свечу. Например, свеча, которая должна закрыться в 16:05, обновляется только тогда, когда закрывается свеча в 16:09:59.
Это происходит не только с 5-минутными интервалами, но и с 15-минутными, и я подозреваю, что это влияет все таймфреймы.
Вот фрагмент результата, который я вижу:
12 декабря 2024 г. 15:55:00.000 0.24217 0.24264 0.24199 0.24241 913829.0

2024-12-12 16:00:00.000 0.24240 0.24445 0.24236 0.24385 2193168.0

2024-12-12 16:04:59.999 0.24240 0.24468 0.24236 0.24427 5214266.0
Есть идеи?
Я плохо разбираюсь в программировании и обработка WebSockets, поэтому я могу пропустить что-то очевидное. Кто-нибудь сталкивался с подобными проблемами с живыми данными? Что может быть причиной дублирования или задержки обновлений свечей и как это исправить, чтобы получать точные и своевременные данные? Мне пригодится любой совет
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... in-my-code
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»