搭建 Hyperliquid 分析儀表板:由零開始到實戰
對於活躍的 Hyperliquid 交易者或量化研究員而言,一個可以即時更新的個人分析儀表板,能夠明顯提升監察倉位、資金費率同盈虧變化的效率。本文會由數據採集、處理到前端視覺化,示範如何搭建一套涵蓋持倉監控、資金費率追蹤、盈虧分析的 Hyperliquid 儀表板。整個流程以開源工具為主,毋須額外付費。
儀表板應該包含哪些模組
一個實用的 Hyperliquid 儀表板,通常需要以下核心模組:
- 帳戶總覽:帳戶價值、可用保證金、已用保證金、整體槓桿水平
- 持倉監控:幣種、方向、倉位大小、入場價、未實現盈虧、清算風險
- 資金費率追蹤:不同交易對的歷史資金費率、當前資金費率、異常波動提示
- 市場數據:最新成交、訂單簿、標記價格、指數價格
- 盈虧分析:按幣種、方向、時間區間統計未實現及已實現 PnL
- 告警系統:例如資金費率超過門檻、槓桿過高、倉位虧損接近預設水平
Hyperliquid 官方文檔列出了全部可用的 Info Endpoint 類型,實作前建議先熟悉不同 endpoint 的回傳格式。
技術棧選型
推薦使用以下開源技術棧:
- 後端數據採集:Python +
requests,或使用aiohttp實現異步採集 - 數據儲存:SQLite(輕量本地方案)或 PostgreSQL + TimescaleDB(更適合時序數據)
- 儀表板框架:Grafana(功能完整,支援 SQLite/Postgres 數據源)或 Streamlit(Python 原生,適合快速原型)
- 即時推送:Hyperliquid WebSocket API
如果只是快速驗證想法,Streamlit 通常是最方便的選擇;如果要做長期監控、多人協作或告警管理,Grafana + TimescaleDB 會更穩陣。
數據採集層實作
帳戶狀態採集
import requests
import time
ENDPOINT = "https://api.hyperliquid.xyz/info"
def fetch_account_state(address: str) -> dict:
payload = {"type": "clearinghouseState", "user": address}
r = requests.post(ENDPOINT, json=payload, timeout=10)
r.raise_for_status()
return r.json()
def fetch_market_data() -> dict:
payload = {"type": "metaAndAssetCtxs"}
r = requests.post(ENDPOINT, json=payload, timeout=10)
r.raise_for_status()
return r.json()
資金費率批量採集
def fetch_all_funding_rates(coins: list, days: int = 1) -> dict:
end_ms = int(time.time() * 1000)
start_ms = end_ms - days * 24 * 3600 * 1000
results = {}
for coin in coins:
payload = {
"type": "fundingHistory",
"coin": coin,
"startTime": start_ms,
}
r = requests.post(ENDPOINT, json=payload, timeout=10)
if r.ok:
results[coin] = r.json()
return results
這段程式會按幣種拉取指定天數的資金費率歷史。實際部署時,可以加上重試、速率限制處理,以及錯誤日誌,避免因 API 短暫異常而中斷整個採集流程。
WebSocket 即時訂閱
如果需要即時顯示訂單簿或最新成交,可以使用 Hyperliquid 的 WebSocket 接口:
import asyncio
import websockets
import json
WS_URL = "wss://api.hyperliquid.xyz/ws"
async def subscribe_trades(coin: str):
async with websockets.connect(WS_URL) as ws:
sub_msg = {
"method": "subscribe",
"subscription": {"type": "trades", "coin": coin}
}
await ws.send(json.dumps(sub_msg))
while True:
msg = await ws.recv()
data = json.loads(msg)
print(data)
asyncio.run(subscribe_trades("BTC"))
WebSocket 訂閱類型可參考 Hyperliquid 官方文檔的 WebSocket 章節。若儀表板要長時間運行,建議加入心跳、斷線重連、資料去重及本地緩存機制。
用 Streamlit 建立儀表板 UI
Streamlit 適合用最少程式碼建立可互動的儀表板。以下是一個簡化版本,展示帳戶總覽及持倉盈虧:
import streamlit as st
import pandas as pd
import plotly.express as px
st.set_page_config(page_title="Hyperliquid Dashboard", layout="wide")
ADDRESS = st.sidebar.text_input("輸入錢包地址", value="0x...")
if ADDRESS.startswith("0x"):
state = fetch_account_state(ADDRESS)
margin = state.get("marginSummary", {})
col1, col2, col3 = st.columns(3)
col1.metric("帳戶價值 (USDC)", f"${float(margin.get('accountValue', 0)):,.2f}")
col2.metric("可用保證金", f"${float(margin.get('withdrawable', 0)):,.2f}")
col3.metric(
"槓桿率",
f"{float(margin.get('totalRawUsd', 0)) / max(float(margin.get('accountValue', 1)), 1):.1f}x"
)
positions = state.get("assetPositions", [])
if positions:
pos_data = []
for p in positions:
pos = p.get("position", {})
pos_data.append({
"幣種": pos.get("coin"),
"方向": "多" if float(pos.get("szi", 0)) > 0 else "空",
"倉位大小": abs(float(pos.get("szi", 0))),
"未實現PnL": float(pos.get("unrealizedPnl", 0)),
"入場價": float(pos.get("entryPx", 0)),
})
df = pd.DataFrame(pos_data)
st.dataframe(df)
fig = px.bar(df, x="幣種", y="未實現PnL", color="方向", title="各倉位未實現盈虧")
st.plotly_chart(fig, use_container_width=True)
這個版本已經可以滿足基本監控需要。你可以再加入:
- 資金費率折線圖
- 各幣種倉位佔比
- 槓桿變化時間序列
- 清算價格或風險距離提示
- 自訂告警門檻
用 Grafana 建立生產級儀表板
如果需要多人協作、歷史數據查詢、長期告警及更穩定的監控環境,建議使用 Grafana 方案:
- 啟動本地 Grafana:
docker run -d -p 3000:3000 grafana/grafana - 配置 PostgreSQL + TimescaleDB 數據源
- 編寫定時 Python 腳本,每分鐘將帳戶、倉位、資金費率等數據寫入資料庫
- 在 Grafana 建立 panel,使用 SQL 查詢生成圖表
- 配置告警規則,例如資金費率超過指定門檻時發送通知
Grafana 官方文檔提供了完整的 panel 配置指南。對於永續合約交易者而言,常見 panel 包括帳戶價值曲線、保證金使用率、資金費率熱力圖、單一幣種 PnL 走勢,以及槓桿水平變化。
OneKey 錢包:儀表板背後的安全基礎
儀表板輸入錢包地址時,本身只是在做只讀查詢;但一旦你需要根據監控結果執行交易,私鑰安全就變得非常重要。OneKey 硬件錢包會將私鑰儲存在實體安全晶片之中,即使電腦受到惡意程式影響,私鑰亦不會直接暴露在電腦環境內。
配合 OneKey Perps,你可以在儀表板發現需要跟進的訊號後,透過硬件簽名執行 Hyperliquid 永續合約交易,形成「數據分析 + 安全執行」的工作流程。這並不代表交易可以避免虧損,但能夠在操作層面降低私鑰外洩風險,令高頻監控與手動執行之間的流程更清晰。
如果你正在建立自己的 Hyperliquid 監控系統,可以下載並試用 OneKey,並在需要交易時透過 OneKey Perps 管理永續合約倉位,為交易流程加入硬件級私鑰保護。
常見問題
Q1:Hyperliquid 是否提供官方 Grafana 數據源插件?
答:目前沒有官方 Grafana 插件。不過,你可以透過 Grafana 的 JSON API 數據源或 Infinity 插件直接查詢 Hyperliquid API,也可以先將數據轉存到中間資料庫,再由 Grafana 讀取。
Q2:WebSocket 連線會自動斷開嗎?
答:WebSocket 連線在長時間沒有活動後有機會超時。建議在程式碼中加入心跳(ping/pong)機制及自動重連邏輯,確保數據採集能夠持續運作。
Q3:儀表板可以顯示其他人的帳戶數據嗎?
答:可以。Hyperliquid 的帳戶數據屬於公開鏈上數據,只要提供有效的以太坊地址,就可以查詢相關資料。這同時意味著,你自己的帳戶數據亦可能被其他人查看。
Q4:如何設定資金費率異常警報?
答:你可以在數據採集腳本加入條件判斷,當資金費率超過預設門檻(例如每小時 0.1%)時,透過 Telegram Bot API 或電郵發送警報。Grafana 亦內置告警功能,適合較長期的監控場景。
Q5:Streamlit 和 Grafana 哪個較適合新手?
答:如果你本身熟悉 Python,Streamlit 較適合快速建立原型,幾十行程式碼已經可以生成圖表;Grafana 則較適合需要多人協作、長期運維和告警管理的生產環境,學習曲線會稍為陡峭,但功能更完整。
風險提示
本文只屬技術教程,不構成投資、法律或財務建議。加密貨幣及永續合約市場波動劇烈,槓桿交易可能放大收益及虧損,儀表板數據只供參考,並不代表未來回報或交易結果。請在充分理解風險後,才作出任何交易決定。



