跳到主要内容

账户统计

以单个对象返回用户的全生命周期交易聚合数据。用于替代账户仪表盘 useAccountStats hook 目前依赖的 Subsquid accountStats 查询。

GET /account/stats
Authorization: Bearer <token>

请求参数

名称类型必需说明
symbolstring过滤到单个市场。缺省时聚合全部市场。

没有日期参数;本端点严格为开户至今(lifetime-to-date)口径。

响应

{
"address": "0xabc...",
"symbol": null,
"closed_count": 87,
"wins": 54,
"losses": 33,
"realized_pnl": "1320.50",
"realized_fees": "215.30",
"volume": "152300.00",
"trade_count": 412,
"net_capital": "1080.00",
"max_capital": null
}

用户从未交易过时,所有数值字段为 0max_capitalnull。HTTP 响应为携带这一空数据体的 200 —— 不是 404

响应字段

字段类型说明
addressstring来自 bearer token 的钱包地址,已转为小写。
symbolstring | null回显 symbol 请求参数。
closed_countint64该用户的 realized_pnl_events 行数。
winsint64realized_pnl > 0realized_pnl_events 行数。
lossesint64realized_pnl ≤ 0realized_pnl_events 行数。
realized_pnlDecimal全部历史上 realized_pnl_events.realized_pnl 之和(USDT)。
realized_feesDecimal全部历史上用户在 trades 上承担的手续费之和(用户为 maker 时取 maker 费,否则取 taker 费)(USDT)。
volumeDecimal用户为 maker 或 taker 的 tradesprice × amount 之和(USD)。
trade_countint64上述 trades 行数。
net_capitalDecimal用户当前未平仓位的 size_in_usd 之和(USD)。反映请求时刻的状态,不是历史聚合值。
max_capitalDecimal | null用户历史上持有过的峰值抵押。v1:恒为 null。见 v1 简化

v1 简化

  • v1 中 max_capitalnull。计算真实的历史峰值需要一张我们尚未引入的 collateral_snapshots 表。客户端应隐藏该行或渲染为 ,而不是把 null 当作 0。快照表就绪后,该字段会在不改变响应结构的前提下被填充。

其他结构变化(增加 unrealized_pnllast_trade_at 等)会走常规的增量式演进;本文档中已有的字段与类型是稳定的。

错误

HTTPcode场景
500ACCOUNT_STATS_FAILED任一组成查询在数据库聚合时出错。

错误响应体:

{ "error": "...", "code": "..." }

注意事项

  • 所有金额均以十进制字符串返回。
  • 本端点面向账户概览头部及类似的常驻组件。各组成查询通过 tokio::try_join! 并发执行。
  • 生命周期总量直接从 tradesrealized_pnl_events 计算。v1 不使用物化汇总表;查询依赖已就位的 (user_address) 索引。