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

如何通过Binance API接收订单成交通知,基于python-binance库WebSocket实现?

python-binance库完全支持你所需的订单成交事件实时推送功能,可以实现你描述的限价买单成交后自动触发后续挂单的需求。

实现原理

Binance为每个账户提供专属的用户数据流WebSocket通道,会实时推送账户下所有订单状态变动、成交记录、余额变更等事件,python-binance已经对该通道做了完整封装,不需要自行开发底层WebSocket交互逻辑。

具体实现步骤
  • 首先调用client.create_listen_key()获取个人账户的监听密钥,该密钥是接收私有数据推送的凭证,有效期为60分钟,需要定期调用刷新接口延长有效期。
  • 初始化用户数据流WebSocket客户端,绑定订单事件回调函数。当你创建的限价买单完全成交时,会收到类型为executionReport的推送消息,当消息内的订单状态字段为FILLED、订单方向为BUY、订单类型为LIMIT时,即可在回调函数内执行你后续的挂单逻辑。
核心代码参考
from binance import ThreadedWebsocketManager
from binance.client import Client

# 初始化API客户端
API_KEY = "你的Binance API密钥"
API_SECRET = "你的Binance API密钥对应的私钥"
client = Client(API_KEY, API_SECRET)

# 提前存储你创建的限价买单的订单ID,避免其他订单触发逻辑
TARGET_BUY_ORDER_ID = 123456789
TARGET_SYMBOL = "BTCUSDT" # 替换为你的交易对

# 订单事件回调函数
def handle_account_event(msg):
    # 过滤非订单执行报告的消息
    if msg.get("e") != "executionReport":
        return
    # 匹配目标订单:订单ID一致、已完全成交、是限价买单
    if (msg.get("i") == TARGET_BUY_ORDER_ID 
        and msg.get("X") == "FILLED" 
        and msg.get("S") == "BUY" 
        and msg.get("o") == "LIMIT"
        and msg.get("s") == TARGET_SYMBOL):
        print("目标限价买单已成交,开始创建后续订单")
        # 此处写入你的后续订单创建逻辑,比如创建止盈止损单等
        # client.create_order(
        #     symbol=TARGET_SYMBOL,
        #     side=Client.SIDE_SELL,
        #     type=Client.ORDER_TYPE_LIMIT,
        #     quantity=0.001,
        #     price="30000"
        # )

# 启动WebSocket监听
twm = ThreadedWebsocketManager(api_key=API_KEY, api_secret=API_SECRET)
twm.start_user_socket(callback=handle_account_event)
# 保持进程运行
twm.join()
注意事项
  • 提前存储目标限价单的订单ID做匹配,可以避免其他订单的成交事件误触发你的后续逻辑。
  • python-binance的ThreadedWebsocketManager已经内置了自动重连逻辑,普通网络波动不需要手动处理重连,建议可额外添加简单的在线状态校验避免极端情况漏消息。
  • 请确保你的API密钥开通了交易权限,同时妥善保管密钥避免泄露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:07