You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python对接ByBit Websocket 提取价格与交易对存入变量方法

实现方案

你现有代码中ws_public.get_data("orderBookL2_25.BTCUSD")返回的是Python原生的列表嵌套字典结构,直接按键名取值就能提取需要的字段,不需要安装额外依赖、也不需要做复杂的格式解析。
按下面的代码修改后,提取出的price为数值类型、symbol为字符串类型,完全匹配你要的赋值效果。

修改后可直接运行的完整代码

#####################################################
from BybitWebsocket import BybitWebsocket
import logging
from time import sleep

def setup_logger():
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    ch = logging.StreamHandler()
    formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
    ch.setFormatter(formatter)
    logger.addHandler(ch)
    return logger

 
if __name__ == "__main__":
    logger = setup_logger()
  
    ws_public = BybitWebsocket(wsURL="wss://stream-testnet.bybit.com/realtime",
                         api_key="apikey", api_secret="apisecret"
                        )
    
    # 后续换交易对只需要改这一个变量即可
    target_symbol = "BTCUSD"
    ws_public.subscribe_orderBookL2(target_symbol)
    subscribe_topic = f"orderBookL2_25.{target_symbol}"

    while(1):
        # 接收Websocket推送的原始数据
        orderbook_data = ws_public.get_data(subscribe_topic)
        
        # 没收到有效数据时跳过本轮循环,避免报错
        if not orderbook_data:
            sleep(1)
            continue
        
        # 取单条有效盘口数据提取字段,要拿买一卖一可调整此处逻辑
        active_tick = orderbook_data[0]
        symbol = active_tick["symbol"]
        price = active_tick["price"]

        # 下方可直接调用两个变量编写交易逻辑
        logger.info(f"当前交易对: {symbol}, 对应价格: {price}")
        # 例:价格达到30000触发信号可直接写 if price >= 30000: 执行对应逻辑

        sleep(1)

#####################################################

核心逻辑说明

  • 新增空值判断:Websocket刚启动尚未收到推送时,get_data()会返回空值,加判断可以避免脚本启动时报索引错误
  • Bybit返回的L2订单簿数据是列表结构,列表内每一项对应一个盘口档位的挂单数据,取orderbook_data[0]即可拿到单条有效挂单记录
  • 取值逻辑和你早年学Java时Map按键取值完全一致:直接通过["字段名"]的方式,就能从单条记录中取出symbol和price字段赋值给独立变量
  • 如果后续需要拿买一、卖一价格,只需要遍历返回的订单簿列表,找到side字段为Buy的最高报价、side字段为Sell的最低报价即可,字段取值逻辑完全不变
  • 如果同时订阅多个交易对,不需要手动硬编码交易对名称,symbol字段会自动返回对应数据所属的交易对标识

提示:代码里把订阅的交易对和订阅主题拆成了独立变量,后续换交易对只需要修改target_symbol的值即可,不用重复改多处代码。

内容的提问来源于stack exchange,提问作者Osman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:45:29