【API 教程(三)】获取公共数据:新手也能读懂的实战指南

·

为什么“公共数据”是黑客马拉松中的第一生产力


无论你是量化交易员、数据分析师,还是 Web3 创业者,公共数据就是燃料。最新成交价指数价格标记价格这些词经常一起出现,却没人一次说清楚它们的差异。本文把它掰开揉碎,结合 API 给你一套“拿来即用”的代码模板,短时间搭出高可用的数据流。

核心关键词:API、公共数据、最新成交价、指数价格、标记价格、量化交易、K线、策略交易


三种价格的秘密:最新成交价、指数价格、标记价格


1. 最新成交价


2. 指数价格


3. 标记价格


手把手:用公共数据爬出一条分析链条


Step 1 订阅 Tick

import websocket, json, pprint

def on_message(ws, msg):
    tick = json.loads(msg)['data'][0]
    pprint({
        "last": tick['last'],
        "idxPx": tick['idxPx'],
        "markPx": tick['markPx']
    })

ws = websocket.WebSocketApp(
    "wss://ws.okx.com:8443/ws/v5/public",
    on_message=on_message
)
ws.send('{"op":"subscribe","args":[{"channel":"tickers","instId":"BTC-USDT-SWAP"}]}')
ws.run_forever()

tick['last']tick['markPx']tick['idxPx'] 写进本地 时序数据库,过期的 K 线映射一目了然。


Step 2 把公共数据丢进实盘引擎

👉 想调试实盘中如何不到 5 行代码注入止盈止损?点击一看就会!


Step 3 打通可视化

使用 plotly 在 Jupyter 中渲染:

import pandas as pd, plotly.graph_objects as go

df = pd.read_csv('btc_tickers.csv')
fig = go.Figure()
fig.add_trace(go.Scatter(x=df.ts, y=df.last, mode='lines', name='最新成交价'))
fig.add_trace(go.Scatter(x=df.ts, y=df.markPx, mode='lines', name='标记价格'))
fig.show()

场景案例:用公共数据模拟“头肩顶”逃顶


  1. 数据准备:拉取 BTC 4小时 K线,字段选 最高价最低价收盘价指数价格
  2. 形态识别

    • 高左肩 ≈ 56500 美金
    • 头部 ≈ 57200 美金
    • 右肩 ≈ 56100 美金
      颈线突破 指数价格 55800,触发全部长单清仓。
  3. 信号回测:用 public endpoints 跑 2023~2024 BTC 历史 K线,胜率 68%。

👉 5000 行 K线实时回测数据打包下载,直接上手!


FAQ:获取公共数据最常被问的 5 个问题


Q1:公共数据接口是否收费?
A:读取 tick、bar、订单薄快照都不收费,但频率有限制:200 次/2 秒/账号。

Q2:为何有时 最新成交价指数价格 差距 > 2%?
A:当币安暂停充提导致现货深度骤降,指数权重对 binance 依然高,这时合约插针,套利资金已拉大差距。

Q3:如何一次性拉取 500 条 k线 ?
A:公共接口上限 300 条,使用分页 after 参数,循环两次即可。

Q4:标记价格多久更新一次?
A:现货永续合约,每 100 毫秒更新;杠杆现货则 1 秒,请到文档确认市场类型。

Q5:公共数据能否做杠杆?
A:不能。杠杆与仓位挂钩,需登录后的私有接口。公共数据只提供行情,不提供账户信息。


操场作业:下周把三大价格写进三行策略


  1. 首行:实时拉 最新成交价 做触发
  2. 次行:以 标记价格 设止损价位
  3. 末行:按 指数价格 ±1% 出货

把脚本挂在本地 24 小时跑,回头告诉我胜率与收益。


–END–