メインコンテンツへスキップ
このページでは、ウォレットとホルダー分析のための4つのCubeを扱います:
  • BalanceUpdates(DWD) — ウォレットのイベント単位の残高変更
  • TokenHolders(DWS) — トークンの現在のホルダースナップショット
  • WalletTokenPnL(DWS) — ウォレットのトークン単位の損益
以下のすべての例はnetwork: sol(Solana)を使用しています。他の対応チェーンの場合はethbscpolygonに置き換えてください。

ウォレットのトークン残高を取得するには?

ウォレットの現在のトークン残高を取得します。このクエリはウォレットが保有する各トークンの最新の残高更新イベントを返します。
query {
  BalanceUpdates(
    network: sol
    limit: {count: 50}
    ownerAddress: {is: "WALLET_ADDRESS"}
  ) {
    BalanceUpdate {
      Currency { MintAddress }
      Account { Owner }
      PostBalance
      PostBalanceInUSD
    }
    Block { Time }
  }
}
GraphQL IDEで開く — 上記のクエリを貼り付けて、自動補完とスキーマ探索を使ってインタラクティブに実行できます。
WALLET_ADDRESSを調査したいウォレットに置き換えてください。ownerAddressセレクターはウォレットオーナーで残高更新イベントをフィルタリングします。
フィールド説明
BalanceUpdate.Currency.MintAddressトークンアドレス
BalanceUpdate.Account.Ownerウォレットオーナーアドレス
BalanceUpdate.PostBalance更新後のトークン残高
BalanceUpdate.PostBalanceInUSDUSD建ての残高価値
Block.Time残高更新のタイムスタンプ
  • リミットを増やす: count: 200に設定して多くのトークンを保有するウォレットの全保有を取得
  • 価値でフィルタ: where: {BalanceUpdate: {PostBalanceInUSD: {gt: 1}}}を追加してダスト残高を除外

残高変更履歴を取得するには?

ウォレットの特定トークンの残高が時間とともにどのように変化するかを追跡します。
query {
  BalanceUpdates(
    network: sol
    limit: {count: 20}
    ownerAddress: {is: "WALLET_ADDRESS"}
    tokenAddress: {is: "TOKEN_ADDRESS"}
    orderBy: Block_Time_DESC
  ) {
    BalanceUpdate {
      PreBalance
      PostBalance
      PostBalanceInUSD
    }
    Block { Time }
    Transaction { Hash }
  }
}
フィールド説明
BalanceUpdate.PreBalanceイベント前の残高
BalanceUpdate.PostBalanceイベント後の残高
BalanceUpdate.PostBalanceInUSDイベント後の残高のUSD値
Block.Time残高が変更された時刻
Transaction.Hash変更の原因となったトランザクション
  • 蓄積の検出: PreBalancePostBalanceを比較 — PostBalance > PreBalanceの場合、ウォレットが蓄積中
  • 時間範囲: where: {Block: {Time: {since: "2025-03-01T00:00:00Z"}}}を追加して特定期間に限定
  • より長い履歴: countを最大10000に増やして包括的な残高履歴を取得
PostBalancePreBalanceの差がイベントごとの純変動を示します。正のデルタはトークンの流入を、負のデルタはトークンの流出を意味します。

トークンのトップホルダーを取得するには?

トークンのトップホルダーを残高順でランク付けして取得します。
query {
  TokenHolders(
    network: sol
    limit: {count: 100}
    tokenAddress: {is: "TOKEN_ADDRESS"}
  ) {
    Token { Address }
    Holder { Address }
    LatestBalance
    LatestBalanceUSD
    FirstSeen
    LastSeen
  }
}
フィールド説明
Token.Addressトークンアドレス
Holder.Addressホルダーウォレットアドレス
LatestBalance現在のトークン残高
LatestBalanceUSD現在の残高のUSD値
FirstSeenこのホルダーがトークンを最初に取得した時期
LastSeenこのトークンに関連する最新のトランザクション
  • クジラ閾値: where: {LatestBalanceUSD: {gt: 10000}}を追加して大口ホルダーのみ表示
  • アクティブホルダー: where: {LastSeen: {after: "2025-03-01T00:00:00Z"}}を追加して最近アクティブなホルダーにフィルタ
  • ホルダー数: countメトリクスを使用してホルダーの総数を取得
TokenHolders CubeはDWS(サマリー)レイヤーテーブルです — 事前集計されており、個別の残高更新をスキャンするよりもはるかに高速にクエリできます。ホルダーランキングと分布分析に使用してください。

ウォレットの損益を取得するには?

ウォレットのトークン単位の損益データを、売買出来高とトレード数を含めて取得します。
query {
  WalletTokenPnL(
    network: sol
    limit: {count: 20}
    walletAddress: {is: "WALLET_ADDRESS"}
  ) {
    Wallet { Address }
    Token { Address }
    BuyVolumeUSDState
    SellVolumeUSDState
    BuyCountState
    SellCountState
    FirstTradeState
    LastTradeState
  }
}
フィールド説明
Wallet.Addressウォレットアドレス
Token.Addressトークンアドレス
BuyVolumeUSDStateこのトークンの購入に費やしたUSD合計
SellVolumeUSDStateこのトークンの売却で受け取ったUSD合計
BuyCountState購入トレード数
SellCountState売却トレード数
FirstTradeState最初のトレードのタイムスタンプ
LastTradeState最新のトレードのタイムスタンプ
  • PnLの計算: SellVolumeUSDState - BuyVolumeUSDStateで各トークンの実現PnLを算出
  • アクティブポジション: SellCountState < BuyCountStateのトークンをフィルタして、ウォレットがまだ保有しているトークンを検索
  • 高アクティビティトークン: BuyCountStateまたはSellCountStateでソートして最も頻繁に取引されたトークンを検索
WalletTokenPnL CubeはwalletAddressセレクターを使用します(ownerAddressではありません)。累積的なトレーディングメトリクスを提供し、ポートフォリオ分析やパフォーマンスリーダーボードに最適です。

マルチチェーンの例

query {
  BalanceUpdates(
    network: sol
    limit: {count: 10}
    ownerAddress: {is: "WALLET_ADDRESS"}
  ) {
    BalanceUpdate {
      Currency { MintAddress }
      PostBalance
      PostBalanceInUSD
    }
  }
}

次のステップ

DEXトレード

DEXトレーディングデータのクエリ — トークントレード、ウォレットアクティビティ、トップトレーダー。

トランスファー

ウォレット間のオンチェーントークントランスファーの追跡。

プールと流動性

DEXプールと流動性データの探索。

OHLCと統計

ローソク足データ、トレード統計、TokenSupplyUpdates、トークンメタデータの取得。