Documentation Index
Fetch the complete documentation index at: https://docs.solanatracker.io/llms.txt
Use this file to discover all available pages before exploring further.
Datastream WebSocket 为您提供任意 Solana 代币的实时价格推送。连接一次即可接收即时价格更新——无需轮询。
URL: wss://datastream.solanatracker.io/{apiKey}
适用于 Premium、Business 和 Enterprise 方案。
所有 Datastream 频道使用同一个 WebSocket 连接。发送 JSON 消息以加入和离开 room。
const ws = new WebSocket("wss://datastream.solanatracker.io/YOUR_API_KEY");
ws.onopen = () => {
console.log("Connected");
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "message") {
// Handle data
}
};
按代币订阅价格
订阅 price-by-token:{tokenAddress} 以获取主池的价格更新。主池通常是流动性最高的池,意味着可交易资金最多。
const token = "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump";
// Join
ws.send(JSON.stringify({ type: "join", room: `price-by-token:${token}` }));
// Receive
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "joined") {
console.log(`Subscribed to ${msg.room}`);
}
if (msg.type === "message") {
const { price, price_quote, pool, time } = msg.data;
console.log(`$${price} (${price_quote} SOL) at ${new Date(time).toISOString()}`);
}
};
// Leave when done
ws.send(JSON.stringify({ type: "leave", room: `price-by-token:${token}` }));
Payload:
{
"type": "message",
"room": "price-by-token:9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump",
"data": {
"price": 0.008006,
"price_quote": 0.00010064,
"pool": "EWiYmq3nWQpoTkcU4UfGYEoYvDHduDsXhpPvqmoqpump",
"token": "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump",
"time": 1723728065246
}
}
聚合价格
订阅 price:aggregated:{tokenAddress} 以获得由多个池综合得出的单一价格。消息包含中位数、平均值、最低、最高和池数量。适用于在多个池中交易的高流动性代币。
const sol = "So11111111111111111111111111111111111111112";
ws.send(JSON.stringify({ type: "join", room: `price:aggregated:${sol}` }));
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "message") {
const { price, aggregated } = msg.data;
console.log(`Price: $${price}`);
console.log(`Median: $${aggregated.median} (${aggregated.poolCount} pools)`);
console.log(`Range: $${aggregated.min} — $${aggregated.max}`);
}
};
Payload:
{
"price": 153.70,
"aggregated": {
"median": 153.68,
"average": 153.67,
"min": 153.36,
"max": 153.71,
"poolCount": 10
},
"topPools": [...]
}
按池订阅价格
订阅 price:{poolId} 以获取某个特定池的价格更新。当您关注特定的 DEX 或流动性来源时使用。
ws.send(JSON.stringify({ type: "join", room: "price:EWiYmq3nWQpoTkcU4UfGYEoYvDHduDsXhpPvqmoqpump" }));
所有池价格
订阅 price:{tokenAddress}(不带 aggregated)以接收代币所有交易池的单独价格更新。
ws.send(JSON.stringify({ type: "join", room: `price:${token}` }));
代币变化(完整更新)
订阅 token:{tokenAddress} 以获取综合的池更新——价格、流动性、市值、供应量和安全数据都在一条消息中。
ws.send(JSON.stringify({ type: "join", room: `token:${token}` }));
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "message") {
const d = msg.data;
console.log(`Price: $${d.price.usd}`);
console.log(`Liquidity: $${d.liquidity.usd}`);
console.log(`Market Cap: $${d.marketCap.usd}`);
console.log(`LP Burn: ${d.lpBurn}%`);
}
};
仅主池(在多池代币上噪音更少):
ws.send(JSON.stringify({ type: "join", room: `token:${token}:primary` }));
实时交易
订阅 transaction:{tokenAddress} 以即时查看每笔兑换。
ws.send(JSON.stringify({ type: "join", room: `transaction:${token}` }));
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "message") {
const trades = Array.isArray(msg.data) ? msg.data : [msg.data];
trades.forEach(t => {
const side = t.type === "buy" ? "BUY " : "SELL";
console.log(`${side} $${t.volume.toFixed(2)} by ${t.wallet}`);
});
}
};
按池过滤:
ws.send(JSON.stringify({
type: "join",
room: `transaction:${token}:${poolId}`
}));
构建实时图表
将价格流与 OHLCV REST 端点结合,构建实时图表。OHLCV 表示开盘、最高、最低、收盘和成交量。使用 REST 加载历史 K 线,然后用 WebSocket 行情更新最新 K 线。
const token = "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump";
const headers = { "x-api-key": "YOUR_API_KEY" };
// 1. Load historical candles via REST
const now = Math.floor(Date.now() / 1000);
const candles = await fetch(
`https://data.solanatracker.io/chart/${token}?type=1m&time_from=${now - 3600}&time_to=${now}`,
{ headers }
).then(r => r.json());
let currentCandle = candles[candles.length - 1];
// 2. Stream live price updates
const ws = new WebSocket("wss://datastream.solanatracker.io/YOUR_API_KEY");
ws.onopen = () => {
ws.send(JSON.stringify({ type: "join", room: `price-by-token:${token}` }));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type !== "message") return;
const { price, time } = msg.data;
const candleStart = Math.floor(time / 60000) * 60;
if (candleStart > currentCandle.time) {
// New candle
candles.push(currentCandle);
currentCandle = { time: candleStart, open: price, high: price, low: price, close: price, volume: 0 };
} else {
// Update current candle
currentCandle.close = price;
currentCandle.high = Math.max(currentCandle.high, price);
currentCandle.low = Math.min(currentCandle.low, price);
}
// Render candles + currentCandle to your chart library
};
开源图表示例
我们有两个开源图表实现可作为起点:
Liveline 图表
使用 Datastream WebSocket 的极简实时折线图。是自定义 UI 的良好起点。
TradingView 高级图表
完整的 TradingView 高级图表集成,Datastream 提供实时 K 线更新。
成交量与统计
代币成交量
订阅 volume:token:{tokenAddress} 获取聚合成交量更新:
ws.send(JSON.stringify({ type: "join", room: `volume:token:${token}` }));
代币统计
订阅 stats:token:{tokenAddress} 获取多时间范围统计(1m、5m、1h、6h、24h 买/卖笔数、成交量、独立交易者):
ws.send(JSON.stringify({ type: "join", room: `stats:token:${token}` }));
获取单一总览快照:
ws.send(JSON.stringify({ type: "join", room: `stats:token:${token}:total` }));
Room 参考
| Room 模式 | 您获得的内容 |
|---|
price-by-token:{token} | 主池的价格 |
price:aggregated:{token} | 跨池中位数/平均/最低/最高 |
price:{pool} | 一个池的价格 |
price:{token} | 所有池的价格 |
token:{token} | 完整池状态(价格、流动性、市值) |
token:{token}:primary | 仅主池状态 |
transaction:{token} | 代币上的所有兑换 |
transaction:{token}:{pool} | 特定池中的兑换 |
volume:token:{token} | 聚合成交量 |
stats:token:{token} | 多时间范围统计 |
价格与图表(REST)
用于历史 OHLCV、价格快照和 ATH 数据的 REST 端点。