1.9 KiB
1.9 KiB
cryptoChart.ts
路径:src/api/cryptoChart.ts
功能用途
加密货币价格走势图 API,使用 Binance REST + WebSocket 实现细粒度(1 分钟)实时走势。当事件类型为加密货币时,详情页可切换显示 YES/NO 分时走势图与加密货币实时价格走势图。
核心能力
isCryptoEvent:判断事件是否为加密货币类型(通过 tags/series slug、ticker)inferCryptoSymbol:从事件信息推断币种符号(btc、eth 等)fetchCryptoChart:从 Binance 获取 1 分钟 K 线历史(优先),不支持时回退 CoinGeckosubscribeCryptoRealtime:订阅 Binance 归集交易(aggTrade)WebSocket,实时推送每笔成交,比 K 线(约 1s)更细;内部 80ms 节流 + RAF 批处理,避免频繁 setOption 卡顿;支持 PING/PONG 保活
币种映射
COINGECKO_COIN_IDS 支持:btc、eth、sol、bnb、xrp、doge、ada、avax、matic、dot、link、uni、atom、ltc、near、apt、arb、op、inj、sui、pepe、wif、shib 等。
使用方式
import { isCryptoEvent, inferCryptoSymbol, fetchCryptoChart } from '@/api/cryptoChart'
if (isCryptoEvent(eventDetail)) {
const symbol = inferCryptoSymbol(eventDetail) ?? 'btc'
const res = await fetchCryptoChart({ symbol, range: '1D' })
const points = res.data ?? []
}
30 秒走势(仅加密货币)
- 30S 选项仅在加密货币走势图显示,YES/NO 分时与 EventMarkets 不包含
- 30S 数据:拉取 1H(60 分钟)走势,过滤保留最近 30 秒内的点展示
扩展方式
- 新增币种:在
COINGECKO_COIN_IDS中追加映射 - 更换数据源:修改
fetchCryptoChart内部实现,或通过后端代理 CoinGecko 以规避 CORS - 实时流参考:Binance WebSocket 归集交易