跳到主要内容

subscribe_ohlcv —— 实时 K 线

一个池的实时 1 秒 OHLCV K 线。每当当前时间桶发生变化,服务器就发出 ohlcv(≤1 次更新/秒)。传 mint 或 pool 二者之一。免费:用从 Telegram 群申请的免费密钥,一次跟一个代币;带上你套餐的密钥,可跟所有代币。

需要密钥:免费的,或你套餐的

实时 K 线需要密钥。在 Free 套餐上,到 Telegram 群申请一个免费密钥:它一次只能跟一个代币的 K 线,切换前先取消订阅,否则第二次订阅会返回 limit_exceeded。用控制台里你套餐的密钥,想订阅多少代币都可以。两种都在握手中传入,auth: { api_key };不带密钥时会返回 api_key_required。

通道Socket.IO 事件
认证在握手中带上密钥,auth: { api_key }:从 Telegram 群申请的免费密钥(一个代币)或你套餐的密钥(所有代币)
发出ohlcv
费用Free:1 个代币、1 个 socket · Lite:所有代币、3 个 socket · Developer:所有代币、10 个 socket

示例​

import { io } from "socket.io-client";

const socket = io("https://sol.shrine.trade", { auth: { api_key: "sk_…" } }); // 可选:你套餐的密钥,可跟所有代币

socket.on("ohlcv", (rows) => {
for (const [t, o, h, l, c, v] of rows) {
console.log(new Date(t), `o=${o} h=${h} l=${l} c=${c} v=${v}`);
}
});

socket.emit("subscribe_ohlcv", { pool: "4mBL…" });

// 之后要停止(免费):socket.emit("unsubscribe_ohlcv", { pool: "4mBL…" });

响应 —— ohlcv​

一个 K 线元组数组(通常每次发出一条)。每个元组是 [ timestamp_ms, open, high, low, close, volume ]:

[[1779812627000, 0.000000033, 0.000000034, 0.000000033, 0.000000034, 5.12]]

元组格式与 lightweight-charts、TradingView、Chart.js financial 等期望的一致——可以直接丢进图表。

错误​

如果订阅无法创建,ack 回调收到的是一个错误对象而不是 { ok: true }:

{ "error": "not_found", "message": "pool not found" }
error何时
invalid_requestmint 和 pool 都没有提供。
not_found该 mint 没有活跃池,或给定的 pool 既没有实时数据也没有 K 线历史。
unavailable瞬时后端错误(服务器已经重试过)。可以安全重试——它不是确定的"未找到"。
limit_exceeded这个连接的订阅数已达上限。

如果你不传 ack 回调,同样的负载会改以 subscription_error 事件发出。

试一试​

说明​

  • 在 Free 上,用从 Telegram 群申请的免费密钥;没有任何计量。
  • 粒度为 1 秒;想要 1m/5m/1h 请在客户端聚合。
  • 用 ohlcv_history(每分钟一次无需密钥)填充初始窗口,然后在这里保持实时。
  • 逐笔交易细节请用 subscribe_trades。
  • 完整可运行的图表见图表示例。