React K 线图组件 kline-charts-react 功能与使用
React K 线图组件 kline-charts-react 提供开箱即用的股票行情展示方案。内置 stock-sdk 支持自动获取 A 股、港股、美股数据并计算技术指标。基于 ECharts 渲染,支持周期切换、缩放拖拽、复权处理及自定义数据源。组件采用 TypeScript 编写,体积轻量,适用于前端量化看板或交易界面开发。

React K 线图组件 kline-charts-react 提供开箱即用的股票行情展示方案。内置 stock-sdk 支持自动获取 A 股、港股、美股数据并计算技术指标。基于 ECharts 渲染,支持周期切换、缩放拖拽、复权处理及自定义数据源。组件采用 TypeScript 编写,体积轻量,适用于前端量化看板或交易界面开发。

一个基于 Props 即可绘制专业 K 线图的组件,数据获取和指标计算全自动。
需求是在 React 项目中集成股票 K 线图,要求支持周期切换、指标查看及缩放拖拽。现有方案如 TradingView 的 Lightweight Charts 免费版功能受限且非 React 组件,npm 上搜索 "react kline" 的结果多为年久失修或 Demo 级别产品。因此决定自行开发通用组件并开源。
项目名为 kline-charts-react,采用 MIT 协议开源。

import { KLineChart } from 'kline-charts-react';
import 'kline-charts-react/style.css';
function App() {
return <KLineChart symbol="sh600519" height={600} />;
}
传入股票代码,组件会自动拉取数据、计算技术指标并渲染完整的 K 线图。
对标主流金融交互,主要功能包括:
前端领域获取股票行情一直存在空白。为此开发了面向前端的股票数据 SDK:stock-sdk。
定位是让 JavaScript/TypeScript 开发者用最简单的方式获取股票行情和 K 线数据。
关键特性:
import { StockSDK } from 'stock-sdk';
const sdk = new StockSDK();
// 批量获取实时行情
const quotes = await sdk.getSimpleQuotes(['sh600519', 'sz000858']);
quotes.forEach(q => {
console.log(`${q.name}: ${q.price} (${q.changePercent}%)`);
});
// 获取前复权日 K 线
const kline = await sdk.getKline('sh600519', { period: 'daily', adjust: 'qfq' });
kline-charts-react 的数据层由 stock-sdk 驱动。你传入股票代码,stock-sdk 自动去拉行情数据,组件拿到数据后计算指标、构建图表配置、渲染到页面上。全程浏览器端完成,不需要自己搭后端。
如果你有自己的行情接口,组件也支持自定义数据源替换。
图表渲染选用 ECharts。原因包括成熟、稳定、社区大、文档全。K 线图(Candlestick)、折线图、柱状图、散点图等类型 ECharts 均有原生支持,配合 dataZoom、tooltip、axisPointer 等交互组件可大幅减少开发工作。
体积方面,组件内部做了按需注册,只引入实际用到的 chart 和 component。echarts 作为 peerDependency 处理,不会打进组件包里。组件自身构建产物约 77KB(gzip 约 19KB)。
默认配置下只需传 symbol,开箱即用:
<KLineChart symbol="sh600519" />
需要精细控制时,通过 props 配置:
<KLineChart
symbol="sh600519"
period="weekly"
adjust="qfq"
theme="dark"
indicators={['ma', 'volume', 'kdj', 'rsi']}
indicatorOptions={{ ma: { periods: [5, 10, 20, 60] } }}
maxSubPanes={3}
height={700}
/>
内置数据源不满足需求时,传一个 dataProvider 即可替换数据获取逻辑:
const myProvider = {
getKline: async (params, signal) => {
const res = await fetch(`/api/kline?symbol=${params.symbol}&period=${params.period}`, { signal });
return res.json();
},
getTimeline: async (params, signal) => {
const res = await fetch(`/api/timeline?symbol=${params.symbol}`, { signal });
return res.json();
},
};
<KLineChart symbol="sh600519" dataProvider={myProvider} />
K 线数据格式为标准 OHLCV(date, open, close, high, low, volume, amount),分时数据为 time, price, volume, amount, avgPrice。只要按此格式返回即可,指标计算交给组件。
组件对外暴露了 ref,方便在组件外部做程序化控制:
const chartRef = useRef<KLineChartRef>(null);
chartRef.current?.refresh(); // 刷新
chartRef.current?.exportImage('png'); // 导出图片
chartRef.current?.setPeriod('weekly'); // 切换周期
chartRef.current?.getEchartsInstance(); // 获取 ECharts 实例
看分时时需要持续刷新数据。组件内置定时轮询,可设定仅在开盘时间段内刷新:
<KLineChart
symbol="sh600519"
period="timeline"
autoRefresh={{ intervalMs: 5000, onlyTradingTime: true }}
/>
yarn add kline-charts-react
# 还需要安装 peer dependencies
yarn add react react-dom echarts
echarts 是 peerDependency 而不是 dependency,如果项目中已安装 echarts,不会出现两份 echarts 的情况。
这是一个为 React 项目设计的 K 线图组件,传入股票代码即可渲染,内置 stock-sdk 数据源、15 种技术指标、完善的交互操作,支持自定义数据源和主题。适用于前端量化看板或交易界面开发。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online