Как собрать аналитический дашборд Hyperliquid: от нуля до практики
Для активного трейдера Hyperliquid или квант-исследователя личный аналитический дашборд с обновлением данных в реальном времени может заметно ускорить принятие решений. В этом гайде разберём, как собрать Hyperliquid analytics dashboard: от сбора и обработки данных до визуализации во фронтенде. В итоге получится дашборд для мониторинга позиций, отслеживания funding rate и анализа PnL — на открытых инструментах и без дополнительной платы.
Какие модули нужны в Hyperliquid-дэшборде
Практичный дашборд для Hyperliquid обычно включает несколько базовых блоков:
- Состояние аккаунта: account value, доступная маржа, открытые позиции, плечо.
- Мониторинг позиций: направление, размер позиции, цена входа, нереализованный PnL.
- Funding rate: текущие и исторические ставки фондирования по выбранным монетам.
- Рыночные данные: список активов, контекст рынка, последние сделки, стакан при необходимости.
- Историческая аналитика: динамика PnL, изменения маржи, funding payments.
- Алерты: уведомления при превышении заданных порогов по funding, плечу или просадке.
Полный список доступных типов Info Endpoint описан в официальной документации Hyperliquid.
Выбор технологического стека
Для open-source реализации можно использовать такой стек:
- Сбор данных на бэкенде: Python +
requests, либоaiohttpдля асинхронного сбора. - Хранение данных: SQLite для лёгкого локального варианта или PostgreSQL + TimescaleDB для таймсерий.
- Фреймворк дашборда: Grafana для мощного мониторинга или 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()
Массовый сбор funding rate
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
WebSocket-подписка в реальном времени
Если нужно показывать стакан или последние сделки в реальном времени, используй WebSocket API Hyperliquid:
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-подписок смотри в разделе WebSocket официальной документации Hyperliquid.
Дашборд UI на Streamlit
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="Нереализованный PnL по позициям"
)
st.plotly_chart(fig, use_container_width=True)
Такой вариант уже покрывает базовый мониторинг аккаунта: стоимость, доступную маржу, текущее плечо и PnL по открытым позициям.
Продакшн-дашборд на Grafana
Если тебе нужны командная работа, хранение истории и полноценные алерты, лучше смотреть в сторону Grafana:
- Запусти локальную Grafana:
docker run -d -p 3000:3000 grafana/grafana. - Настрой источник данных PostgreSQL + TimescaleDB.
- Напиши Python-скрипт, который раз в минуту забирает данные из Hyperliquid API и пишет их в базу.
- Создай панели в Grafana и построй графики через SQL-запросы.
- Настрой алерты, например уведомление при превышении funding rate заданного порога.
Официальная документация Grafana содержит подробные инструкции по настройке панелей и алертов.
OneKey Wallet: безопасная база для дашборда
Сам дашборд запрашивает данные по адресу кошелька в режиме read-only. Но как только ты хочешь действовать по сигналам из мониторинга — открывать или закрывать позиции, менять плечо, торговать бессрочники — безопасность приватных ключей становится критичной.
OneKey Hardware Wallet хранит приватные ключи в физическом защищённом чипе. Даже если компьютер заражён вредоносным ПО, приватный ключ не должен покидать устройство.
В связке с OneKey Perps ты можешь использовать практичный workflow: анализировать данные в своём Hyperliquid-дэшборде, а затем безопасно исполнять сделки по Hyperliquid perpetuals через аппаратную подпись. Это создаёт понятную связку: аналитика данных + безопасное исполнение.
Попробуй скачать OneKey и использовать OneKey Perps как более безопасный способ работать с бессрочниками, особенно если ты регулярно торгуешь с плечом и хочешь снизить операционные риски вокруг приватных ключей.
Частые вопросы
Q1: Есть ли у Hyperliquid официальный плагин источника данных для Grafana?
Нет, официального Grafana-плагина сейчас нет. Но можно подключаться к Hyperliquid API через JSON API datasource или Infinity plugin в Grafana, либо сохранять данные в промежуточную базу данных и уже из неё строить графики.
Q2: Может ли WebSocket-соединение отваливаться?
Да. При долгом отсутствии активности WebSocket-соединение может завершиться по таймауту. В коде лучше реализовать heartbeat-механику через ping/pong и автоматическое переподключение, чтобы сбор данных не прерывался.
Q3: Можно ли показывать данные чужого аккаунта?
Да. Данные аккаунтов Hyperliquid публичны, и для запроса достаточно указать любой валидный Ethereum-адрес. Это также означает, что твои собственные данные тоже видны другим пользователям.
Q4: Как настроить алерт на аномальный funding rate?
Можно добавить условие в скрипт сбора данных: если funding rate превышает заданный порог, например 0,1% в час, отправлять уведомление через Telegram Bot API или email. В Grafana также есть встроенная система алертов.
Q5: Что лучше для новичка — Streamlit или Grafana?
Streamlit проще, если ты уже пишешь на Python: несколько десятков строк кода — и у тебя есть таблицы и графики. Grafana лучше для долгосрочного мониторинга, командного доступа и продакшн-алертов, но порог входа немного выше.
Риск-предупреждение
Этот материал — технический гайд и не является инвестиционной рекомендацией, юридическим или финансовым советом. Крипторынок крайне волатилен, а данные дашборда предназначены только для анализа и не предсказывают будущую доходность. Принимай торговые решения только после самостоятельной оценки рисков.



