搭建 Hyperliquid 分析儀表板:由零開始到實戰

2026年5月6日

對於活躍的 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 方案:

  1. 啟動本地 Grafana:docker run -d -p 3000:3000 grafana/grafana
  2. 配置 PostgreSQL + TimescaleDB 數據源
  3. 編寫定時 Python 腳本,每分鐘將帳戶、倉位、資金費率等數據寫入資料庫
  4. 在 Grafana 建立 panel,使用 SQL 查詢生成圖表
  5. 配置告警規則,例如資金費率超過指定門檻時發送通知

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 則較適合需要多人協作、長期運維和告警管理的生產環境,學習曲線會稍為陡峭,但功能更完整。

風險提示

本文只屬技術教程,不構成投資、法律或財務建議。加密貨幣及永續合約市場波動劇烈,槓桿交易可能放大收益及虧損,儀表板數據只供參考,並不代表未來回報或交易結果。請在充分理解風險後,才作出任何交易決定。

使用 OneKey 保護您的加密之旅

View details for 選購 OneKey選購 OneKey

選購 OneKey

全球最先進嘅硬件錢包。

View details for 下載應用程式下載應用程式

下載應用程式

詐騙預警。支援所有幣種。

View details for OneKey SifuOneKey Sifu

OneKey Sifu

即刻諮詢,掃除疑慮。