【问题标题】:How do I get multiple candlestick-streams from Binance Websocket in python? (different coins)如何在 python 中从 Binance Websocket 获取多个烛台流? (不同的硬币)
【发布时间】:2021-12-07 21:17:32
【问题描述】:

我正在尝试通过 Binance Websocket 从多个硬币接收实时数据。

这是一些示例数据。 我的目标是使用实时数据。

import json
import websocket

TRADE_SYMBOL = "ETHBUSD"
TRADE_SYMBOL2 = "BTCUSD"

message1 = ""
message2= ""


def on_open(ws):
    print("open")

def on_message(ws,message):
    json_message = json.loads(message) 
    candle = json_message['k']  
    print(message)

    is_candle_closed = candle['x']


def on_close():
    print("closed")
    

SOCK = "wss://stream.binance.com:9443/ws/{}@kline_1m".format(TRADE_SYMBOL.lower())   
SOCK2 = "wss://stream.binance.com:9443/ws/{}@kline_1m".format(TRADE_SYMBOL2.lower())   
ws = websocket.WebSocketApp(SOCK, on_open=on_open,on_close=on_close, on_message=on_message)
ws2 = websocket.WebSocketApp(SOCK2, on_open=on_open,on_close=on_close, on_message=on_message)

on_open(ws)
on_open(ws2)
on_message(ws,message1)
on_message(ws,message2)

ws.run_forever()
ws2.run_forever()

提前谢谢你们! 保持安全

【问题讨论】:

    标签: python websocket binance


    【解决方案1】:

    您可以在同一个 Binance websocket 流上获得多个加密货币对,如果您愿意,还可以获得不同的时间范围(请参见下面代码中的 url)。 如果您仍然需要同时拥有多个 websocket,请阅读库文档: https://websocket-client.readthedocs.io/en/latest/examples.html#dispatching-multiple-websocketapps

    在代码中,我更正了回调的参数、流的 url 以及烛台数据结构信息的一些细节。我已经在 google colabs 中对其进行了测试,并且可以正常工作。 (之前运行 !pip3 install websocket-client )

    import json
    import websocket
    
    # websocket.enableTrace(True) #uncomment for debug
    
    def on_open(ws):
        print("open")
    
    def on_message(ws,message):
        json_message = json.loads(message) 
        candle = json_message['data']['k']  
        print(message)
        is_candle_closed = candle['x']
        if is_candle_closed:
            print(json.dumps(candle, indent=2))
    
    def on_close(ws, close_status_code, close_msg):
        print("closed")
      
    SOCK = "wss://stream.binance.com:9443/stream?streams=ethusdt@kline_1m/btcusdt@kline_1m/bnbusdt@kline_1m/ethbtc@kline_1m"
    
    ws = websocket.WebSocketApp(SOCK, on_open=on_open,on_close=on_close, on_message=on_message)
    ws.run_forever()
    

    【讨论】:

      猜你喜欢
      • 2022-07-23
      • 2021-07-30
      • 2021-07-29
      • 2018-12-23
      • 1970-01-01
      • 2021-05-17
      • 2014-04-10
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多