### WS 标准化(prices/book/trades/account\_\*) — 连接与心跳 — - 主网:`wss://ws.pacifica.fi/ws`(无需 login) - 订阅报文:`{"method":"subscribe","params":{...}}` - 心跳:每 ≤60s 需发消息;建议每 30s 发送 `{"method":"ping"}`,服务端返回 `{"channel":"pong"}` — 符号规范 — - Pacifica:使用基础符号(如 `BTC`);若上层传入 `BTC-USD`/`BTCUSDT`,在适配器中归一化为 `BTC`。 — 渠道与字段映射 — 1. prices(全市场价) - 订阅:`{"method":"subscribe","params":{"source":"prices"}}` - 输入字段:`symbol, funding, next_funding, oracle, mark, mid, yesterday_price, open_interest, volume_24h, timestamp` - 标准化映射: - `symbol` → `symbol` - `mark` → `markPrice` - `mid` → `midPrice` - `oracle` → `oraclePrice` - `funding` → `fundingRate` - `next_funding` → `nextFundingRate` - `open_interest` → `openInterest` - `volume_24h` → `volume24hUsd` - `timestamp` → `ts`(毫秒) 2. book(聚合订单簿) - 订阅:`{"method":"subscribe","params":{"source":"book","symbol":"BTC","agg_level":1}}` - 响应:`data.l = [ bids[], asks[] ]`,每个层级对象:`{ p: price, a: amount, n: numOrders }` - 标准化映射: - `data.l[0][i].p` → `bids[i].price` - `data.l[0][i].a` → `bids[i].qty` - `data.l[0][i].n` → `bids[i].numOrders` - `data.l[1][i].p` → `asks[i].price` - `data.l[1][i].a` → `asks[i].qty` - `data.l[1][i].n` → `asks[i].numOrders` - `s` → `symbol` - `t` → `ts` 3. trades(逐笔) - 订阅:`{"method":"subscribe","params":{"source":"trades","symbol":"BTC"}}` - 常见字段:`s(符号), a(数量), p(价格), e(事件类型), d(方向), t(时间戳)` - 标准化映射: - `s` → `symbol` - `a` → `qty` - `p` → `price` - `e` → `eventType` - `d` → `direction` - `t` → `ts` - 其他原始字段(如 `u/h/c`)保留在 `raw` 区域,供审计/调试 4. account\_\*(账户类频道) - 订阅: - `account_info`:`{"method":"subscribe","params":{"source":"account_info","account":""}}` - `account_balance`:`{"method":"subscribe","params":{"source":"account_balance","account":""}}` - `account_positions`:`{"method":"subscribe","params":{"source":"account_positions","account":""}}` - `account_orders`:`{"method":"subscribe","params":{"source":"account_orders","account":""}}` - 字段举例(account_info):`b(余额), ae(权益), as(资产), aw(保证金预警), mu(保证金使用), pc/oc/sc(仓位/订单/触发数), t(时间)` - 标准化(建议):`{ balance, accountEquity, assets, alertWarning, marginUsed, posCount, openOrderCount, stopCount, ts }` — 断线与重连 — - 网络异常/服务端关闭:建议指数退避(250ms 基数,最多 4 次),并按需退订/重订。 - 初次订阅回放:若需要一致性,可在 WS 建立前先用 REST 拉取一次快照,再用 WS 增量叠加。 — 事件转发(多账户) — - 在 `AccountManager` 中对各适配器 `ws()` 事件打上标签:`{ ...payload, __am: { exchange, accountId } }`,便于统一消费与审计。