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

Phemex API交易配置求助:Python调用WebSocket获取比特币实时数据异常

问题排查及解决方案

核心错误点

  • 客户端初始化参数错误:你已定义API_ID、API_SECRET变量,但实例化Client时传入的是字符串常量"API_ID"、"API_SECRET",实际密钥没有被传入,直接导致鉴权失败。
  • 未主动发送订阅指令:Phemex WebSocket服务不会主动推送数据,连接建立后需要主动发送对应行情的订阅请求才能收到推送,这和Binance部分公共频道的连接逻辑有差异。
  • 环境不匹配风险:如果你生成的是Phemex主网的API密钥,连接测试网节点wss://testnet.phemex.com/ws会直接鉴权失败,测试网需要单独在测试网平台注册账号生成专属密钥。

修正后代码示例(以订阅BTCUSDT永续合约实时成交行情为例)

from phemex.client import Client
from phemex.exceptions import PhemexAPIException
import websocket, json, pprint, talib, numpy, requests

API_ID = "替换为你的实际API key"
API_SECRET = "替换为你的实际API secret"
# 主网节点用 wss://ws.phemex.com,测试网保留当前地址即可
SOCKET = "wss://testnet.phemex.com/ws"

# 修正参数传入,用变量而非字符串
client = Client(API_ID, API_SECRET, True)

def on_open(ws):
    print("opened connection")
    # 连接建立后主动发送订阅请求,这里订阅BTCUSDT永续合约的实时tick频道
    subscribe_msg = {
        "id": 1,
        "method": "trade.subscribe",
        "params": ["BTCUSDT"]
    }
    ws.send(json.dumps(subscribe_msg))

def on_close(ws, close_status_code, close_msg):
    print(f"closed connection, code: {close_status_code}, msg: {close_msg}")

def on_message(ws, message):
    print("received message")
    json_message = json.loads(message)
    pprint.pprint(json_message)

def on_error(ws, error):
    print(f"error occurred: {error}")

ws = websocket.WebSocketApp(SOCKET, 
                            on_open=on_open, 
                            on_close=on_close, 
                            on_message=on_message,
                            on_error=on_error)
ws.run_forever()

补充说明

  • 如果需要订阅其他行情(比如K线、订单深度),修改订阅请求中method和params的对应值即可,参数规则可参考Phemex官方接口文档。
  • 运行前确认你使用的API密钥和连接的节点环境(主网/测试网)一致,测试网的资产和交易数据和主网完全隔离。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 15:48:00