Skip to main content
加载 REST 快照后,用 PnL 房间更新钱包总计或持仓。需要在交易之间更新估值时,再加入价格订阅。
PnL V2 Datastream 适用于 Premium、Business 和 Enterprise 方案。
使用您的 Data API 密钥连接到 wss://datastream.solanatracker.io/{apiKey}。

Room 类型

共有三种 room,每种服务于不同的用例:
PnL room 在每次成交时推送 tradeUpdate,在余额变化时推送 balanceUpdate。它们也会推送 priceUpdate 事件,但频率较低。可将 priceUpdate 视为对沉寂头寸的补发消息,而不是快速价格推送。要获得最快的未实现 PnL 跳动,请将 PnL room 与价格流配合使用。

连接

Room: pnl:{wallet}:{token}

订阅钱包中某个特定代币的持仓。交易和余额消息更新持仓;周期性的 priceUpdate 刷新与价格相关的数值。 tradeUpdate reports a buy or sell:
balanceUpdate reports a position balance update:

订阅示例

Room: pnl:{wallet}

一次订阅某钱包的所有代币持仓。推送与上面相同的 tradeUpdate、balanceUpdate 和 priceUpdate 消息,但涵盖钱包交互过的每个代币——无需事先知道代币地址。
构建实时投资组合面板时使用 pnl:{wallet} — 每个钱包只需一个 room 订阅。

Room: pnl:{wallet}:summary

每当聚合值发生变化时接收钱包的总 PnL 摘要。此 room 返回钱包级总计,而不是单个持仓。

结合价格流更新未实现盈亏

PnL room 在交易上链时为您提供官方的成本基础、FIFO 已实现 PnL 和余额变化。FIFO 表示 “first in, first out”(先进先出):较早的买入先与卖出匹配。PnL room 并非设计为逐笔价格推送。priceUpdate 事件受限速,且仅为长时间无变化的持仓补发。 对于 UI 每个价格跳动都要更新未实现 PnL 数字的实时投资组合界面,请将 PnL room 与价格流组合: 将 PnL room 用作 currentBalance 和 holdingCostBasis 的真实来源,并在每次价格跳动到来时重新计算 unrealizedPnl = (currentBalance × livePrice) − holdingCostBasis。

示例:单一持仓的实时未实现 PnL

示例:整个钱包的实时未实现 PnL

订阅 pnl:{wallet} 以获取每个持仓的交易和余额更新,然后为钱包持有的每个代币动态订阅价格 room。
价格流可能更新频繁。生产环境中请批量处理 UI 更新或限流日志,避免每次价格跳动都让控制台或浏览器被淹没。
选哪个价格 room?
  • price:aggregated:{token} — 跨池中位数价格。
  • price-by-token:{token} — 主池价格。

priceUpdate payload(PnL room)

PnL room 会在持仓报价一段时间未变时推送 priceUpdate 作为兜底。请将其视为周期性刷新,而不是实时推送:

取消订阅

通过发送 leave 消息离开任何 room:

相关指南

盈亏指南

核心 PnL V2 概念、端点以及钱包索引的工作方式。

实时价格

price:aggregated 和 price-by-token room — 将它们与 PnL 配对以获得实时未实现 PnL。

钱包盈亏

使用 REST API 分析钱包 PnL、持仓、交易时机和敞口。

持仓与交易

将实时钱包活动与 PnL 流结合,构建实时投资组合面板。