跳到主要内容

数据接入

Keisen 负责缓存、视口与重绘。K 线来自哪里由你决定——REST、WebSocket、本地 JSON 都可以,只要按下面的契约把 KlineBar[] 交进来。

常见接法:getData 拉历史,onSubscribe 推实时;离线 demo 也可直接传 data

API

KeisenChart

Prop类型说明
dataKlineBar[]受控静态序列;适合离线 demo / 已算好的数组
getDataGetDataFn按需拉历史:(params) => Promise<KlineBar[]>
onSubscribeOnSubscribeFn建立实时订阅;通过 emit 推送,可返回 unsubscribe
symbolstring品种 id,原样传入 getData / onSubscribe
resolutionResolution周期,默认 "1"(分钟数字符串,或 "1D" / "1W" / "1M"

datagetData 可二选一;实时场景再加 onSubscribe

KlineBar

一根 K 线:

字段类型说明
tnumber开盘时间,毫秒 Unix
o / h / l / cnumber开 / 高 / 低 / 收
vnumber成交量

getData(params)

库在首屏加载、切周期 / 标的、以及向左滚到历史边界时调用。你按 params 去自己的接口取数,返回按时间升序的 KlineBar[]

params 字段类型说明
resolutionResolution当前周期
symbolstring?当前品种(来自 prop)
fromnumber?时间窗起点(毫秒)
tonumber?时间窗终点(毫秒)
countBacknumber?期望条数(视口估算;接口可按 limit 用)
const getData: GetDataFn = async ({ symbol, resolution, from, to, countBack }) => {
return api.getKlines({ symbol, interval: resolution, from, to, limit: countBack });
};

onSubscribe(params, emit)

库在上下文就绪后调用。你在此连上 WS(或自建 poll),用 emit 写入图表;切周期 / 卸载时若返回了函数,库会调用它做清理。

参数类型说明
params.resolutionResolution当前周期
params.symbolstring?当前品种
emitSubscribeEmit推送入口,见下表
返回值void | (() => void)可选 unsubscribe(关 WS / 清 timer)

emit 方法:

方法用法
emit.bar(bar)推荐默认:按 t 自动分流——与最后一根相同则更新,更大则追加,更小则忽略
emit.updateLast(bar)显式更新最后一根t 必须与最后一根相同)
emit.append(bar)显式追加新一根t 必须严格大于最后一根)
emit.replace(bars)整表替换当前序列

多数实时源(只推「当前这根 K 线」)用 emit.bar 即可,不必自己判断 update / append:

const onSubscribe: OnSubscribeFn = ({ symbol, resolution }, emit) => {
const ws = api.subscribe(symbol, resolution);
ws.on("candle", (bar) => emit.bar(bar));
return () => ws.close();
};

若上游已经区分「tick 刷新」与「新开一根」,也可显式调用:

ws.on("tick", (bar) => emit.updateLast(bar));
ws.on("bar", (bar) => emit.append(bar));

useKlineData()

须在 KeisenChart 子树内调用。多数场景用 getData / onSubscribe 即可;需要在 UI 里直接读写 store 时再用。

返回值类型说明
dataChartDataState(Vue 为 Ref当前 { kline, meta }
setData(patch) => void浅合并写入 data / meta
replaceKline(bars) => void整表替换
appendBars(bars) => void逐根追加
prependBars(bars) => void前置历史(分页加载)

示例

getData 拉预置快照 + onSubscribe mock 推送:

加载可运行示例…