subscribe_trades:实时成交
该池子上执行的每一笔成交,带完整明细(钱包、签名、数量、价格)。服务端推送 trade。传 mint 或 pool 之一。
| 通道 | Socket.IO 事件 |
| 认证 | 无,不需要 API 密钥 |
| 推送 | trade |
| 费用 | 免费 |
示例
- JavaScript
- Python
import { io } from "socket.io-client";
const socket = io("https://sol.shrine.trade"); // 无需密钥
socket.on("trade", (t) => {
const side = t.is_buy ? "BUY " : "SELL";
console.log(`${side} ${t.token_amount.toFixed(2)} @ ${t.price} by ${t.wallet.slice(0, 4)}…`);
});
socket.emit("subscribe_trades", { pool: "4mBL…" });
// 之后要停止(免费):socket.emit("unsubscribe_trades", { pool: "4mBL…" });
import socketio
sio = socketio.Client()
@sio.on("trade")
def on_trade(t):
side = "BUY " if t["is_buy"] else "SELL"
print(f"{side} {t['token_amount']:.2f} @ {t['price']} by {t['wallet'][:4]}…")
sio.connect("https://sol.shrine.trade") # 无需密钥
sio.emit("subscribe_trades", {"pool": "4mBL…"})
sio.wait()
# 之后要停止(免费):sio.emit("unsubscribe_trades", {"pool": "4mBL…"})
响应:trade
{
"protocol": "PUMPSWAP",
"pool": "4mBLRPUyfE7CvxmXiGJx5WA51isanbxpdbdPjFuuBzmY",
"mint": "Gc6rNxGnoQt6vCfhNzn5iJnPBu1V38GZfdYERfnXpump",
"signature": "c9asMSPXxiEYC4RQpLBFUAASCL63TXZpPgSPgivDcJxsNoNc7ptrh6DfJy67NS2p7nEQBbVR45ZuPhyBqectR76",
"is_buy": true,
"token_amount": 153285714.285714,
"quote_amount": 5.0,
"price": 0.000000033,
"marketcap": 32.618826,
"wallet": "9AiXyDfy6cKieVPgwyfsNS37HypoS8k7ju2CV3WnyvZG",
"timestamp": 1779812627
}
is_buy:交易者收到基础代币(价格上涨)为true;卖出为false。token_amount/quote_amount:人类可读单位(已按小数位换算)。
错误
订阅无法创建时,ack 回调收到的是错误对象而不是 { ok: true }:
{ "error": "not_found", "message": "pool not found" }
error | 何时 |
|---|---|
invalid_request | mint 和 pool 都没传。 |
not_found | 该 mint 没有活跃池子,或给定的 pool 数据层不认识。 |
unavailable | 后端暂时性错误(服务端已重试)。可安全重试,不是最终的"未找到"。 |
不传 ack 回调时,同样的内容以 subscription_error 事件推送。
试一试
说明
- 免费、无需密钥,
trade消息永不计费。 - 我们只对至少有一个在线订阅者的池子发布成交,火力全开的流才不至于昂贵。
- 同一池子内的成交顺序保持不变。
- 只想要价格/市值?用更轻的
subscribe。