読了時間:11分
概要
Hyperliquidから構造化された市場データ(出来高ランキング、清算サマリー、ファンディングレートのスナップショットなど)を取得するには、通常、独自のインデックス作成パイプラインを構築・維持する必要があります。SQL Explorerを使えば、インデックス化されたHyperliquidデータ(数十億行)にSQLで直接アクセスでき、任意のクエリをRESTエンドポイントとして呼び出すことができます。 このガイドでは、Hyperliquidのテーブルをクエリし、その結果をまとめて市場ダイジェストを作成し、それを毎日スケジュールに従ってTelegramチャンネルに配信するPythonボットを構築します。
- SQL Explorerは、あらゆるSQLクエリをRESTエンドポイントに変換します。SQLを記述し、POSTリクエストを送信すれば、JSON形式のレスポンスが返ってきます。インデクサーも、パイプラインも、追加のインフラも不要です。
- このガイドでは、QuicknodeがXで毎週公開しているHyperliquidのまとめ記事の背景にあるクエリパターンの一部を取り上げています。
- qn-guide-examplesに完全なソースコード(Python および TypeScript)が公開されています
学習内容
- SQL ExplorerのREST APIの仕組みと、プログラムから呼び出す方法
- さまざまな分析課題に適したHyperliquidテーブルの選び方
- 主なクエリパターン:時間範囲によるフィルタリング、数値型へのキャスト(
toFloat64()、スナップショットサブクエリ、および次のような重複排除フィルターuser = liquidated_user - 複数のテーブルのクエリ結果を自動レポートにまとめる方法
必要なもの
- SQL Explorerへのアクセス権限を持つAPIキーが設定されたQuicknodeアカウント(有料プランで利用可能)
- Python 3.10 以降、またはNode.js 20 以降がローカルにインストールされていること
- (任意)TelegramボットのトークンとチャットID(@BotFather を使ってボットを作成し、チャンネルに追加した後、getUpdatesエンドポイントからチャットIDを取得してください)
- SQLおよびREST APIに関する知識
AIコーディングエージェントを使用する場合は、SQL Explorerのドキュメントや スキーマリファレンスを参照するように設定してください。また、SQL Explorerを含むQuicknodeの全製品に関する知識を提供する「Quicknode Skill」をインストールすることもできます。
テーブルスキーマとクエリパターンをコンテキストとして、エージェントはあらゆるHyperliquid分析に対してカスタムSQLクエリを生成できます。
SQL Explorerとは何ですか?
SQL Explorerは、オンチェーンデータをクエリ可能なテーブルとしてインデックス化し、あらゆる SQL クエリを受け付ける単一のエンドポイントを公開する REST API です。すべてのテーブル、カラム、および事前定義されたクエリについては、「スキーマリファレンス」および「事前定義されたクエリ」のページにドキュメントが記載されています。
エンドポイントは次のとおりです:
投稿 https://api.quicknode.com/sql/rest/v1/query
すべてのリクエストは同じ形式をとります:
{
"query": "SELECT ...",
"clusterId": "hyperliquid-core-mainnet"
}
cURLリクエストの例:
curl -X POST 'https://api.quicknode.com/sql/rest/v1/query' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY' \
-d '{
"query": "SELECT ...",
"clusterId": "hyperliquid-core-mainnet"
}'
この応答には、データ、列のメタデータ、およびパフォーマンス統計情報が含まれています:
{
"data": [
{
"day": "2026-04-07",
"total_volume_usd": "24100000000",
"total_fills": "12453211",
"active_traders": "60142"
}
],
"meta": [
{ "name": "day", "type": "Date" },
{ "name": "total_volume_usd", "type": "Decimal(38, 18)" }
],
"rows": 7,
"statistics": {
"elapsed": 0.034,
"rows_read": 7,
"bytes_read": 1456
}
}
特に留意すべき点は、以下の通りです。 データ 行オブジェクトの配列であり、すべての数値は文字列として返されます(コード内で型変換を行う必要があります)。また、 統計 クエリの実行時間やスキャンしたデータ量を把握できるため、クエリのコストを監視し、時間をかけて最適化することができます。
SQL Explorerは、集計データや履歴データに対する分析クエリを実行するために設計されています。データがオンチェーンで到着した時点で即座に配信する必要があるイベント駆動型のユースケースには、QuicknodeStreamsやgRPCが適しています。このガイドで紹介するボットは、スケジュールに従って実行され、集計された統計情報を取得します。
なお、このガイドでは、プログラムによるアクセス向けのREST APIに焦点を当てています。まずインタラクティブにデータを操作してみたい場合は、SQL Explorerダッシュボードを開き、以下のクエリをコードに記述する前に、実際に実行してみてください。
Hyperliquidデータセットのクエリ実行
SQL Explorerでは現在、取引データ、市場のスナップショット、ファンディング、清算、ブリッジ活動、ステーキングなどを網羅する35以上のHyperliquidテーブルにインデックスが作成されています。このガイドで紹介するボットではそのうち4つのテーブルを使用していますが、ご自身の疑問を解消するために、任意のテーブルを組み合わせて活用することも可能です。特定のボットそのものよりも、これらのテーブルへのアプローチ方法を理解することが重要です。一度パターンを把握すれば、それをあらゆるHyperliquidの分析に応用できるようになります。
以下に、最もよく使われる表をいくつか紹介します:
| 表 | 用途 |
|---|---|
hyperliquid_metrics_overview | 事前に集計済みのプラットフォームの日次合計:取引高、約定数、アクティブなトレーダー数、手数料、清算件数 |
hyperliquid_trades | 個々の取引のすべて。出来高ランキングや銘柄ごとの取引動向の分析に活用 |
hyperliquid_fills | 清算を含むすべての建玉;以下の条件でフィルタリングする is_liquidation = 1 強制閉鎖について |
ハイパーリキッド・パーペチュアル・マーケット・コンテクスト | 特定の時点における市場の概況:ファンディングレート、未決済建玉、マーク価格、オラクル価格 |
hyperliquid_funding_summary_hourly | コインごとの事前集計済み時間単位の資金調達レート。生のフィルデータをスキャンするよりも高速です。 |
hyperliquid_clearinghouse_states | 口座単位のポジションおよび証拠金の概要;ポートフォリオや損益(PnL)の追跡に活用 |
プラットフォームの概要
表: hyperliquid_metrics_overview | ソートキー: 日
これは、あらかじめ集計済みの日次メトリクス表です。数十億行をスキャンしてボリュームを計算する代わりに、 hyperliquid_trades、この表には、プラットフォーム全体の1日あたりの合計値(取引高、約定数、アクティブなトレーダー数、手数料、清算件数、清算取引高)が示されています。「全体像」を把握したい場合は、まずここから確認してください。
SELECT
日,
total_volume_usd,
total_fills,
active_traders,
total_fees,
liquidation_count,
liquidation_volume_usd
FROM hyperliquid_metrics_overview
WHERE day >= today() - INTERVAL 7 DAY
ORDER BY 日 昇順
週間まとめでは、このクエリが冒頭の要約(週間総取引高、1日あたりの最大トレーダー数、および清算総額)の基盤となっています。間隔を変更するには、 期間:30日間 月ごとの一覧を表示するか、特定の日付範囲に絞り込んで、特定のイベントを分析します。
取引高上位の資産
表: hyperliquid_trades | ソートキー: ブロック番号, trade_id
これは未加工の取引テーブルであり、Hyperliquid における個々の取引がすべて記載されています。このクエリは、以下の項目ごとに集計を行います。 コイン 資産を過去24時間の米ドル建て取引高順にランク付けする。その toFloat64() 価格とサイズは高精度で格納されるため、キャストが必要です 小数 型や算術演算には、明示的な型変換が必要です。
SELECT
コイン,
count() AS 取引数,
ラウンド(合計(toFloat64(price) * toFloat64(size)), 2) AS volume_usd,
countDistinct(buyer_address) AS unique_buyers
FROM hyperliquid_trades
WHERE timestamp >= 現在() - INTERVAL 24 時間
グループ BY コイン
順序 BY volume_usd DESC
指値 10
その countDistinct(buyer_address) この列は、市場参加度のおおよその指標となります。HIP-3資産を具体的に抽出するには、以下を追加してください。 WHERE coin LIKE 'xyz:%' または coin LIKE 'cash:%' フィルターへ。
次のようなタイムウィンドウフィルタ timestamp >= now() - INTERVAL 24 HOUR パーティションプルーニングを有効にします。時間列でフィルタリングを行うクエリは、テーブル全体のスキャンに比べて実行速度が大幅に向上します。
清算の概要
表: hyperliquid_fills | ソートキー: ブロック番号, tid, ユーザー
Hyperliquidでのすべての資金調達(清算を含む)は、ここに記録されています。その is_liquidation = 1 フラグは強制閉鎖を示しています。重要なフィルターは user = liquidated_user: 清算が行われるたびに、2件の約定記録が生成されます(1件は清算された当事者用、もう1件は取引の相手方となるカウンターパーティ用)。この条件がないと、すべての清算イベントが二重にカウントされてしまいます。
SELECT
コイン,
countDistinct(liquidated_user) AS users_rekt,
count() AS liq_count,
round(sum(toFloat64(price) * toFloat64(size)), 2) AS liq_volume_usd
FROM hyperliquid_fills
WHERE is_liquidation = 1
AND user = liquidated_user
AND time >= 現在() - INTERVAL 24 時間
グループ BY コイン
順序 BY liq_volume_usd DESC
指値 10
清算を方向別に分類するには、以下を追加してください。 側面 ~へ SELECT そして GROUP BY. 個別の清算イベントを照会することもできます( GROUP BY, 追加 liquidated_user そして 清算価格 ~へ SELECT) 最大の単一清算事例を特定するため。
資金調達金利の極端な変動
表: ハイパーリキッド・パーペチュアル・マーケット・コンテクスト | ソートキー: コイン, polled_at
これは、すべてのパーペチュアル市場の状態(ファンディングレート、マーク価格、オラクル価格、未決済建玉)を一定間隔で記録したスナップショットテーブルです。サブクエリ SELECT max(polled_at) 最新のスナップショットを取得し、すべての市場にわたる特定の時点の状況を確認できます。
SELECT
コイン,
round(toFloat64(資金調達) * 8760 * 100, 2) AS annualized_rate_pct,
round(toFloat64(open_interest) * toFloat64(mark_px), 2) AS oi_usd,
丸め(toFloat64(mark_px), 4) AS mark_price
FROM hyperliquid_perpetual_market_contexts
WHERE polled_at = (
SELECT max(polled_at)
FROM hyperliquid_perpetual_market_contexts
)
ORDER BY abs(toFloat64(資金調達)) DESC
LIMIT 10
年率換算の計算式:原数値 資金調達 この欄は時間当たりの単価であるため、8,760(1年間の時間数)と100を掛けると、年間パーセンテージに換算されます。以下で並べ替えを行うと abs(funding) 両極端の状況を捉えています。つまり、マイナス金利が大きい場合はロングポジションの保有者がショートポジションの保有者に支払っている(弱気なポジション)ことを意味し、プラス金利が大きい場合はショートポジションの保有者がロングポジションの保有者に支払っていることを意味します。
資金調達レートは常に未決済建玉と併せて確認してください(open_interest * mark_px (米ドル建ての場合)。5万ドルの未決済建玉に対する年率換算で-800%という数値は、単なるノイズに過ぎない。一方、1,300万ドルの未決済建玉に対する同率(リキャップの「TRUMP」に関する調査結果のように)は、意味のあるシグナルとなる。
単一の時点の状況を見るのではなく、資金調達の推移を時系列で追跡するには、 hyperliquid_funding_summary_hourly この表には、コインごとの1時間ごとの資金調達レートの平均値(あらかじめ集計済み)が記載されています。
インテリジェンスボットの構築
上記のクエリが分析の中核となります。ボット自体の仕組みは単純で、REST API を通じて各クエリを実行し、結果を整形して、Telegram や Discord などのプラットフォームに送信します。完全な実装を確認するには、リポジトリをクローンしてください:
git clone https://github.com/quiknode-labs/qn-guide-examples.git
cd qn-guide-examples/sql-explorer/hyperliquid-intel-bot
python3 -m venv .venv && source .venv/bin/activate # use "python" if python3 is not found on your system
pip install -r requirements.txt
cp .env.example .env
以下の項目をご記入ください .env Quicknode APIキー、Telegramボットトークン、およびチャットIDを指定して:
QUICKNODE_API_KEY: 以下からコピー dashboard.quicknode.com/api-keysTELEGRAM_BOT_TOKEN: 以下の方法でボットを作成する @BotFather そして、表示されたトークンをコピーしてくださいTELEGRAM_CHAT_ID: これは数値のIDでなければなりません。ボットをチャンネルまたはグループに追加するか(あるいはDMを送るか)、ボットに任意のメッセージを送信してから、https://api.telegram.org/bot<YOUR_TOKEN>/getUpdatesブラウザで、次のページを開いてください"chat": {"id": ...}返信の中に。その番号があなたのチャットIDです(例:-1001234567890(チャンネル/グループ用)
QUICKNODE_API_KEY=your_quicknode_api_key
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
TELEGRAM_CHAT_ID=your_telegram_chat_id
決して自分の .env ファイル version control に追加します。それを .gitignore.
hyperliquid-intel-bot/
├── /typescript/ # 機能は同一のTypeScript版ボット
├── bot.py # エントリポイント、Telegramへの配信
├── queries.py # SQL定義およびREST API呼び出し
├── formatter.py # ダイジェストのフォーマット処理
├── .env.example
└── requirements.txt
SQL-to-RESTブリッジ
このプロジェクトにおける主要な機能は、 run_query() in queries.py. これは、SQLとアプリケーションをつなぐ架け橋となるものです。任意のSQL文字列をREST APIに送信し、解析された結果の行を返します。
import os
import requests
from dotenv import load_dotenv
load_dotenv()
SQL_EXPLORER_URL = "https://api.quicknode.com/sql/rest/v1/query"
QUICKNODE_API_KEY = os.environ.get("QUICKNODE_API_KEY")
if not QUICKNODE_API_KEY:
raise ValueError("Set QUICKNODE_API_KEY in your .env file before running the bot.")
CLUSTER_ID = "hyperliquid-core-mainnet"
def run_query(sql: str) -> list[dict]:
"""Send a SQL query to Quicknode SQL Explorer, return the result rows."""
resp = requests.post(
SQL_EXPLORER_URL,
headers={
"x-api-key": QUICKNODE_API_KEY,
"Content-Type": "application/json",
},
json={"query": sql, "clusterId": CLUSTER_ID},
)
resp.raise_for_status()
result = resp.json()
print(f" {result['rows']} rows in {result['statistics']['elapsed']:.2f}s")
return result["data"]
このプロジェクトのすべてのクエリ関数は、SQL文字列を渡すだけのシンプルなラッパーです。 run_query(). このSQLは、ダッシュボードでテストしたものと同じです:
def get_platform_overview() -> リスト[辞書]:
return run_query("""
SELECT day, total_volume_usd, total_fills, active_traders,
total_fees, liquidation_count, liquidation_volume_usd
FROM hyperliquid_metrics_overview
WHERE day >= today() - INTERVAL 7 DAY
ORDER BY day ASC
""")
# get_top_assets(), get_liquidations(), get_funding_extremes()
# 上記のセクションにあるSQLと同じパターンに従う
bot.py これは、すべてを結びつけるエントリポイントです:
- フェッチ: 内の各クエリ関数を呼び出します
queries.py, これはSQLをREST APIに送信し、結果の行を返す - 書式: 生の行を
formatter.py, これは構造化されたテキストの要約を生成する - 送信: ダイジェストをTelegramに投稿する(またはコンソールに出力する)
--dry-runモード)
完全な実装はリポジトリにあります。
ボットの実行
python3 bot.py # fetch data and send to Telegram
python3 bot.py --dry-run # print the digest to console without sending
Telegram を設定する前に、次のコマンドを実行してください。 python3 bot.py --dry-run APIキーが正常に機能していること、およびクエリによってデータが返されることを確認するためです。ダイジェストは、何も送信することなくコンソールに出力されます。
期待される出力:
2026-04-14 08:00:01 INFO SQL Explorer からダイジェストデータを取得中...
2026-04-14 08:00:01 INFO プラットフォームの概要: 7 行を 0.03 秒で処理
2026-04-14 08:00:02 INFO 上位資産:10行、0.41秒
2026-04-14 08:00:02 INFO 清算:10 行、0.38 秒
2026-04-14 08:00:03 INFO ファンディングの極端値:10行を0.12秒で処理
# ...フォーマット済みのダイジェスト出力...
Telegramのメッセージ:
📊 ハイパーリキッド・デイリーダイジェスト
2026年4月14日
概要(過去7日間)
取引高:1,052億ドル
約定数:5,860万
アクティブなトレーダー数:60,247人
手数料:1,620万ドル
取引高上位の資産(過去24時間)
1. BTC 24億ドル
2. xyz:CL 12億ドル
3. ETH 10億ドル
4. xyz:CB 5億8,000万ドル
5. xyz:SP500 2億7,000万ドル
清算額(過去24時間)
合計:7,850万ドル
ロング:3,140万ドル | ショート:4,710万ドル
清算されたアドレス数:2,293
資金調達レートの極端な値
0G:年率-871% 未決済建玉 $2.1M
MAVIA:年率+733% 未決済建玉 $890K
AXS:年率-260% 未決済建玉 $3.4M
TRUMP:年率 -135% 未決済建玉 $13M
PONKE:年率+98% 未決済建玉 $1.2M
Quicknode SQL Explorer 提供
このボットのTypeScript版も、qn-guide-examplesリポジトリで公開されています。REST APIへの呼び出しはまったく同じで、異なるのは言語ごとのラッパーのみです。
スケジュール通りに走る
このボットはスタンドアロンのスクリプトであるため、どのスケジューラでも動作します。cronジョブが最も簡単な方法です:
0 8 * * * cd /path/to/hyperliquid-intel-bot && /path/to/.venv/bin/python3 bot.py
より堅牢な環境を構築したい場合は、クラウドプロバイダー上でスケジュールされたタスクとしてデプロイしてください(EventBridge を使用した AWS Lambda、Cloud Scheduler を使用した Google Cloud Functions、あるいは cron を実行するシンプルな VM など)。このスクリプトにはサーバーへの依存関係はなく、Python とアウトバウンド HTTPS さえあれば動作します。必ず QUICKNODE_API_KEY, TELEGRAM_BOT_TOKEN、および TELEGRAM_CHAT_ID 実行環境では、以下を通じて利用可能です。 .env または、ご利用のクラウドプロバイダーのシークレットマネージャー。
結論
SQLクエリから、TelegramにHyperliquidの市場ダイジェストを配信するスケジュール設定済みのボットへと発展させました。その仕組みは単純です。SQLを記述し、RESTエンドポイントを呼び出し、JSONを処理するだけです。しかし、興味深いのは、その上に何を構築できるかという点です。
これらは、QuicknodeがXで毎週公開しているHyperliquidのまとめ記事の基盤となっているのと同じクエリパターンです。このデータセットには、Hyperliquid上のすべての取引、清算、ファンディング支払い、ブリッジイベント、および市場のスナップショットが含まれています。これらすべては、単一のエンドポイントを通じてクエリを実行できます。
今後の手順
- リサーチ用ダッシュボードを構築します。クエリの結果をチャート作成ライブラリ(Plotly、D3、Recharts)に取り込み、アクセスするたびに更新されるインタラクティブなダッシュボードを構築します。
- AIエージェントを稼働させる。 LLMに以下のアクセス権を付与する
run_query()ツールとして活用し、Hyperliquidの市場に関する自然言語の質問に答えさせる。「今週、最も多くの清算が発生したコインはどれか?」という質問が、関数の呼び出しとなる。 - ポートフォリオの追跡ツールを作成する。 「」を使用してください
hyperliquid_fillsそしてhyperliquid_clearinghouse_states特定のアドレス向けのPnLトラッカーを構築するためのテーブル。過去のポジションのスナップショットやファンディング支払いの履歴が含まれます。 - クエリを拡張しましょう。 あらかじめ用意されたクエリライブラリには、クジラ取引、ビルダーのランキング、HIP-3とネイティブ暗号資産の内訳比較、ブリッジのフロー、バリデーター報酬など、40以上のテンプレートが用意されています。
よくある質問
SQL Explorer はどのチェーンに対応していますか?
SQL Explorerは現在、Hyperliquid(HyperCoreメインネット)に対応しており、今後さらに他のチェーンにも対応する予定です。REST APIのインターフェースはチェーンに関係なく同一であるため、現在作成したコードは、clusterIdパラメータを変更するだけで、新しいチェーンでも動作します。
SQL Explorerの価格はいくらですか?
SQL Explorer はクレジット制の課金モデルを採用しています。各クエリには最低 10 クレジットの費用がかかり、その金額は実行時間とスキャンされたデータ量に基づいて計算されます。
クエリの結果には行数の制限はありますか?
はい、REST APIでは1回のリクエストにつき最大1,000行が返されます。それ以上の結果セットが必要な場合は、LIMITおよびOFFSET句を使用してページネーションを行ってください。レスポンスには、一致する行の総数を示す「rows_before_limit_at_least」フィールドが含まれています。
SQL Explorerをリアルタイムのアラートに利用することはできますか?
SQL Explorerは、リアルタイムのイベントストリーミングではなく、履歴データや集計データに対する分析クエリを実行するために設計されています。リアルタイムの通知(即時清算アラートなど)には、Quicknode StreamsまたはgRPCエンドポイントをご利用ください。SQL Explorerは、定期的なレポート、ダッシュボード、および調査用クエリに最適なツールです。
APIのレスポンスで、数値が文字列として返ってくるのはなぜですか?
SQL ExplorerはClickHouse上で動作しますが、ClickHouseでは金融データに対して高精度のDecimal型が使用されています。これらは、浮動小数点数の精度低下を防ぐため、JSON内で文字列としてシリアライズされます。必要に応じて、アプリケーションコード内でこれらをfloat型またはDecimal型にキャストしてください。
皆様からのフィードバックを心よりお待ちしております!❤️
ご意見や新しいトピックに関するご要望などがありましたら、ぜひお知らせください。皆様からのご連絡を心よりお待ちしております。
