跳转到主要内容
本页涵盖三个用于钱包与持有者分析的 Cube:
  • BalanceUpdates (DWD) — 钱包逐事件的余额变动
  • TokenHolders (DWS) — 代币当前持有者快照
  • WalletTokenPnL (DWS) — 钱包按代币的盈亏
以下示例均使用 network: sol(Solana)。其他受支持的链请改为 ethbscpolygon

How do I get a wallet’s token balances?

获取钱包当前代币余额。本查询返回该钱包持有的每种代币的最新一条余额更新事件。
query {
  BalanceUpdates(
    network: sol
    limit: {count: 50}
    ownerAddress: {is: "WALLET_ADDRESS"}
  ) {
    BalanceUpdate {
      Currency { MintAddress }
      Account { Owner }
      PostBalance
      PostBalanceInUSD
    }
    Block { Time }
  }
}
在 GraphQL IDE 中打开 — 将上方查询粘贴到 IDE 中即可交互式运行,享受自动补全和 Schema 探索。
WALLET_ADDRESS 替换为要查看的钱包。ownerAddress 选择器按钱包所有者过滤余额更新事件。
FieldDescription
BalanceUpdate.Currency.MintAddress代币地址
BalanceUpdate.Account.Owner钱包所有者地址
BalanceUpdate.PostBalance更新后的代币余额
BalanceUpdate.PostBalanceInUSD余额的 USD 价值
Block.Time余额更新时间戳
  • 提高 limit:设 count: 200 以覆盖持仓较多的钱包
  • 按价值过滤:增加 where: {BalanceUpdate: {PostBalanceInUSD: {gt: 1}}} 排除 dust 余额

How do I get balance change history?

追踪某钱包对特定代币的余额如何随时间变化。
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 }
  }
}
FieldDescription
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 的差值表示该事件的净变动。正增量表示代币流入;负增量表示流出。

How do I get a token’s top holders?

按余额排序获取某代币的头部持有者。
query {
  TokenHolders(
    network: sol
    limit: {count: 100}
    tokenAddress: {is: "TOKEN_ADDRESS"}
  ) {
    Token { Address }
    Holder { Address }
    LatestBalance
    LatestBalanceUSD
    FirstSeen
    LastSeen
  }
}
FieldDescription
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(Summary)层表 — 已预聚合,比逐条扫余额更新快得多。适用于持有者排名与分布分析。

How do I get wallet profit and loss?

获取钱包按代币的盈亏数据,包含买卖成交额与成交笔数。
query {
  WalletTokenPnL(
    network: sol
    limit: {count: 20}
    walletAddress: {is: "WALLET_ADDRESS"}
  ) {
    Wallet { Address }
    Token { Address }
    BuyVolumeUSDState
    SellVolumeUSDState
    BuyCountState
    SellCountState
    FirstTradeState
    LastTradeState
  }
}
FieldDescription
Wallet.Address钱包地址
Token.Address代币地址
BuyVolumeUSDState买入该代币累计花费(USD)
SellVolumeUSDState卖出该代币累计收到(USD)
BuyCountState买入笔数
SellCountState卖出笔数
FirstTradeState首笔交易时间戳
LastTradeState最近一笔交易时间戳
  • 计算 PnLSellVolumeUSDState - BuyVolumeUSDState 为各代币已实现盈亏
  • 仍在持仓:筛选 SellCountState < BuyCountState 找出钱包仍持有的代币
  • 高频代币:按 BuyCountStateSellCountState 排序找出交易最频繁的代币
WalletTokenPnL Cube 使用 walletAddress 选择器(不是 ownerAddress)。提供累计交易指标 — 适合组合分析与业绩排行。

多链示例

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

下一步

DEX Trades

查询 DEX 交易数据 — 代币交易、钱包活动与头部交易者。

Transfers

追踪钱包间的链上代币转账。

Pools & Liquidity

探索 DEX 池与流动性数据。

OHLC & Statistics

获取 K 线、成交统计、TokenSupplyUpdates 与代币元数据。