Я использую twm для управления своими WebSocket-соединения. Запускаю менеджер и настраиваю сокеты для нескольких символов с определенным интервалом.
Код: Выделить всё
twm = ThreadedWebsocketManager() twm.start() for symbol in SYMBOLS: twm.start_kline_futures_socket(callback=stream_candles, symbol=symbol, interval=INTERVAL)
Код: Выделить всё
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