メインコンテンツへスキップ
サンプルアプリに戻る

ハイパーリキッド・ポートフォリオ・トラッカー

QuicknodeのHyperliquid情報エンドポイントを使用して、Hyperliquidの永久先物ポジション、PnL、証拠金使用率、およびVaultの保有資産を監視するリアルタイムのポートフォリオトラッカーを構築します。

フロントエンドフレームワーク/ライブラリ:
React
言語:
TypeScript
ビルドツール/開発サーバー:
Vite
サンプルアプリのプレビュー

はじめに

As a perpetual trader on Hyperliquid, having a comprehensive portfolio tracker is essential for monitoring your positions, PnL, and margin utilization in real-time. This guide shows you how to build a powerful portfolio tracker that monitors any Hyperliquid wallet using Quicknode's Hyperliquid info endpoint.

This example app is provided for educational and demonstration purposes only.


その他の参考資料

For an in-depth guide on implementing this portfolio tracker from scratch, check out our comprehensive guide on Quicknode


特長


  • Live Position Tracking: Real-time updates on perpetual positions with PnL
  • Portfolio Analytics: Account value, margin usage, and risk metrics
  • Vault Management: Track vault value and lock-up schedules
  • Spot Holdings: Monitor token balances and USD values
  • Search For Any Wallet: Switch between different trading accounts

Tech Stack

Frontend


  • React + TypeScript + Tailwind CSS + shadcn/ui & Radix UI
  • レスポンシブなインターフェースで取引データを表示します
  • 1000ミリ秒ごとに投票データベースを照会して更新を確認する
  • データベースへのリクエストを通じて、ウォレットの切り替えを処理する

Backend


  • Node.js indexer with 500ms polling interval
  • 5つの異なるHyperliquidエンドポイントからデータを取得します
  • 適切な精度処理を行って、データをPostgreSQLに格納します
  • フロントエンドからのウォレット切り替えリクエストを処理する

世論調査に関する留意点

このガイドでは、リアルタイムの更新を実演するために、短いポーリング間隔(インデクサーは500ms、フロントエンドは1000ms)を使用しています。必要に応じて、これらの間隔を調整することができます:

  • フロントエンド: src/Dashboard.tsx 260行目~264行目 - 以下の部分を変更する 1000 値を入力してください:
    const interval = setInterval(async () => {
    await fetchData(currentWallet);
    }, 1000);
  • インデクサー: src/indexer/indexer.ts 623行目~630行目 - 以下の部分を変更する 500 値を入力してください:
    setInterval(async () => {
    await indexer.checkForWalletSwitch();
    await indexer.indexData();
    }, 500);

QuicknodeとSupabaseの利用状況を監視し、コストを最適化しましょう。

Database


  • Supabase PostgreSQL
  • データを6つのテーブルに、財務上の精度で格納しています(DECIMAL (種類)
  • フロントエンドとインデクサー間の通信を、以下を介して処理します wallet_switch_requests
  • 一意性制約を使用して、重複するエントリを防ぐ

データソース


  • ハイパーリキッド 情報 Quicknode経由のエンドポイント
  • 口座データ、ポジション、保管資産、スポット残高、および委任情報を提供します
  • 精度を表す数値を文字列として含むJSON形式のデータを返す
  • ウォレットアドレスをパラメータとして指定したHTTP POSTリクエストを介してアクセスします

建築


                    ┌─────────────────┐
│ 犯人トレーダー │
└─────────┬───────┘
│ 1. ウォレットアドレスを入力

┌─────────────────┐
│ Reactダッシュボード │◄─────────────────┐
└─────────┬───────┘ │
│ 2. リクエストの保存 │ 6. データの読み取りと表示
▼ │
┌─────────────────┐ │
│ Supabase │◄─────────────────┤
│ PostgreSQL │ │
└─────────┬───────┘ │
│ 3. リクエストの検出 │ 5. データの保存
▼ │
┌─────────────────┐ │
│ インデクサー │──────────────────┘
│ (500ms ポーリング) │
└─────────┬───────┘
│ 4. HyperCoreデータの取得

┌─────────────────┐
│ Quicknode │
│ Hyperliquid │
│ エンドポイント │
└─────────────────┘

ポートフォリオ・トラッカーは、PostgreSQLデータベースを介して通信を行う3つのコンポーネントで構成されています。インデクサーはHyperliquidからデータを取得してデータベースに格納し、フロントエンドは表示のためにデータベースにクエリを実行します。


前提条件


  • Quicknode account with Hyperliquid endpoint
  • Supabaseアカウント
  • Node.js v20以降、npm、およびコードエディタ
  • React/TypeScriptおよびREST APIの基本概念
  • SQLの基本概念
  • オプション:ハイパーリキッドによる永久取引体験
Why Quicknode Endpoint?

Quicknode は、独自のノードを実行する必要をなくす、Hyperliquid 専用の API エンドポイントを提供しています:

  • 設定不要の事前設定済みエンドポイント
  • 接続管理とフェイルオーバーを処理する
  • 追加のインフラを必要とせずに、HyperCoreのデータに直接アクセス可能

Quick Start

1. Clone the Repository

git clone https://github.com/quiknode-labs/qn-guide-examples.git
cd qn-guide-examples/sample-dapps/hyperliquid-portfolio-tracker

2. Setup Environment File

cp .env.example .env

3. Supabase Database Setup


  1. Create a new Supabase account or login at supabase.com

  2. Create a new project, then click the Connect button

Connect Button


  1. In the App Frameworks section, select React and change using ~へ Vite

Select React


  1. をコピーして VITE_SUPABASE_URL そして VITE_SUPABASE_ANON_KEY values to your .env file 1
  2. Navigate to the SQLエディタ, paste the content of supabase/schema.sql, then click 実行

SQLエディタ

This creates all necessary tables and functions for storing and fetching trading data.

4. Quicknode Setup


  1. Create a free trial Quicknode account
  2. Create a Hyperliquid RPC endpoint
  3. Copy the endpoint URL and paste it to your .env ファイル
Important

必ず既存のものを削除してください /evm そして、以下を追加します /info Hyperliquidの情報エンドポイントにアクセスするには、QuicknodeのエンドポイントURLの末尾に以下を追加してください。

5. Start the Application

npm install && npm run dev:both

This runs both the frontend application and the indexer. Open your browser at http://localhost:5173 and use the demo wallet button to see the tracker in action.


トラブルシューティング


If the indexer stops responding or no data appears after wallet search, simply re-run the indexer:

npm run dev:indexer

Then search again by inputting a valid wallet address.


プレビュー

トップページ

トップページ

Dashboard View

Dashboard View


詳細はこちら



Future Improvements


  • Liquidation Warnings: Alert users when positions approach dangerous margin levels
  • Performance Charts: Track portfolio performance over time with Recharts
  • Price Alerts: Send notifications using your favorite notification service
  • Multi-Wallet Dashboard: Compare multiple trading accounts side-by-side

投稿とフィードバック
皆様からのご意見をお待ちしております。また、このサンプルアプリへのご協力も大歓迎です!
問題の報告やフィードバックをお寄せいただくには、GitHubのイシューを qn-ガイド-例 リポジトリ。
投稿するには、以下の手順に従ってください:
  1. リポジトリをフォークする
  2. フィーチャーブランチを作成する:
    git checkout -b feature/amazing-feature
  3. 変更内容をコミットします:
    git commit -m "素晴らしい機能を追加"
  4. ブランチをプッシュしてください:
    git push origin feature/amazing-feature
  5. プルリクエストを作成してください。