通过 KlineCharts 获取和展示印度股票数据是一个直接的过程,核心在于从数据源 API 获取数据,并进行正确的格式转换。以下是一份清晰的对接指南。
🎯 核心步骤概览
对接流程主要包含三个关键步骤,下图清晰地展示了从数据获取到最终渲染的完整路径:
flowchart TD
A[开始对接] --> B[获取股票PID<br>(唯一标识符)]
B --> C[调用K线接口<br>获取历史数据]
C --> D[数据清洗与格式转换<br>(关键步骤)]
D --> E[KlineCharts渲染图表]
E --> F{是否需要实时更新?}
F -- 是 --> G[接入WebSocket]
F -- 否 --> H[完成]
G --> E
📝 详细操作指南
下面我们详细讲解图中的每个关键步骤。
1. 获取股票的唯一标识符 (PID)
在请求K线数据前,必须先获取目标股票在系统内的唯一产品ID(pid)。印度市场的国家代码(countryId)为 14。
接口示例:
GET https://api.stocktv.top/stock/stocks?countryId=14&pageSize=10&page=1&key=YOUR_API_KEY
调用此接口会返回一个股票列表,其中每个股票的 id 字段就是后续所需的 pid。
2. 请求K线数据与格式转换
获得pid后,即可调用K线接口获取数据。接口支持多种时间周期,例如P1D(日线)、PT1H(1小时线)等。
接口示例:
GET https://api.stocktv.top/stock/kline?pid=946725&interval=P1D&key=YOUR_API_KEY
关键步骤:数据格式转换
API返回的数据需要转换成KlineCharts能够识别的格式。以下是转换逻辑的对比:
| StockTV API 返回字段 | KlineCharts 所需字段 | 处理说明 |
|---|---|---|
time |
timestamp |
时间戳(毫秒),可直接使用 |
open |
open |
开盘价,建议用 Number() 转换 |
high |
high |
最高价,建议用 Number() 转换 |
low |
low |
最低价,建议用 Number() 转换 |
close |
close |
收盘价,建议用 Number() 转换 |
volume |
volume |
成交量,建议用 Number() 转换 |
3. 完整代码示例
将以上步骤整合,下面是一个简洁的HTML示例,可直接运行。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>印度股票K线图示例</title>
<script src="https://cdn.jsdelivr.net/npm/klinecharts/dist/klinecharts.min.js"></script>
</head>
<body>
<div id="chart-container" style="height: 600px;"></div>
<script>
const chart = klinecharts.init('chart-container');
const API_KEY = 'YOUR_API_KEY'; // 请替换为您的API Key
const PID = 17940; // 示例PID(如Nifty 50指数)
async function loadData() {
try {
const response = await fetch(`https://api.stocktv.top/stock/kline?pid=${
PID}&interval=P1D&key=${
API_KEY}`);
const result = await response.json();
if (result.code === 200) {
// 数据格式转换
const chartData = result.data.map(item => ({
timestamp: item.time,
open: Number(item.open),
high: Number(item.high),
low: Number(item.low),
close: Number(item.close),
volume: Number(item.volume)
})).sort((a, b) => a.timestamp - b.timestamp); // 按时间排序
// 渲染图表
chart.applyNewData(chartData);
}
} catch (error) {
console.error('数据请求失败:', error);
}
}
loadData();
</script>
</body>
</html>
💡 进阶功能与注意事项
- 实时数据推送:若需图表实时更新,可接入WebSocket服务(服务地址通常为
wss://ws-api.stocktv.top/connect),在收到推送后使用 KlineCharts 的updateData方法更新最后一条K线。 - 错误处理:在生产环境中,请务必添加完善的错误处理逻辑,例如检查API返回值中的
code字段是否为200,并对网络请求异常进行捕获。 - 时区考虑:印度标准时间为(IST,UTC+5:30),在处理时间相关数据时请注意时区转换。
希望这份指南能帮助你快速上手。如果你在具体操作中遇到问题,比如查找特定股票的PID,可以随时提出。