币安加密货币数据 (Crypto Market)对接指南
币安加密货币数据 (Crypto Market)对接指南
与股票接口不同,加密货币接口对接币安 (Binance) 数据,使用 Symbol (如 BTCUSDT) 作为唯一标识,且 K 线数据的返回格式为数组格式(而非对象格式),这一点在解析时需要特别注意。
StockTV API 对接文档:加密货币 (Crypto)##1. 基础配置* 接口域名: https://api.stocktv.top
- 加密货币基础路径:
/crypto - 主要数据源: 币安 (Binance)
- 认证方式: URL 参数
key=您的API密钥
##2. 核心接口流程###第一步:获取交易对列表 (Pair List)获取支持的加密货币交易对列表。
-
接口:
/crypto/pairlist -
方法:
GET -
关键参数:
-
key: 您的API Key -
marketId: 338 (代表币安交易所数据) -
page:1 -
请求示例:
GET https://api.stocktv.top/crypto/pairlist?key=YOUR_KEY&marketId=338&page=1
- 响应关键字段:
symbol: 交易对代码 (如 “BTC”, “ETH”)pair: 完整交易对 (如 “BTC/USDT”)price: 最新价格
###第二步:获取 K 线数据 (Klines)注意:加密货币的 K 线数据返回的是 数组格式 (Array),而非 JSON 对象。
-
接口:
/crypto/getKlines -
方法:
GET -
参数:
-
symbol: 交易对 (格式为BTCUSDT, 去掉中间的/) -
interval: 周期 (1m,5m,1h,4h,1d,1w,1M) -
请求示例:
GET https://api.stocktv.top/crypto/getKlines?symbol=BTCUSDT&interval=1d&key=YOUR_KEY
- 响应数据结构 (数组索引映射):
- Index
0: 开盘时间戳 (毫秒) - Index
1: Open (开盘价) - Index
2: High (最高价) - Index
3: Low (最低价) - Index
4: Close (收盘价) - Index
5: Volume (成交量)
###第三步:获取最新价格 (Ticker)如果不需要 K 线,只需获取当前价格。
- 接口:
/crypto/tickerPrice - 参数:
symbols=BTCUSDT,ETHUSDT(支持批量)
##3. 完整代码示例 (HTML + KlineCharts)此代码演示了如何处理加密货币特有的数组格式 K 线数据并渲染图表。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>加密货币 K线演示 (Crypto)</title>
<script src="https://cdn.jsdelivr.net/npm/klinecharts/dist/klinecharts.min.js"></script>
<style>
body { font-family: sans-serif; padding: 20px; background-color: #1e1e1e; color: #fff; }
.control-panel { background: #2d2d2d; padding: 15px; margin-bottom: 20px; border-radius: 8px; display: flex; gap: 10px; align-items: center; }
#chart { width: 100%; height: 600px; border: 1px solid #444; }
button { padding: 8px 15px; cursor: pointer; background: #007bff; color: white; border: none; border-radius: 4px; }
select, input { padding: 8px; background: #444; color: white; border: 1px solid #666; border-radius: 4px; }
.price-display { margin-left: auto; font-size: 1.2em; font-weight: bold; color: #00ff00; }
</style>
</head>
<body>
<h2>StockTV 加密货币对接 (Binance Source)</h2>
<div class="control-panel">
<label>交易对:</label>
<select id="symbolSelect" onchange="loadCryptoData()">
<option value="BTCUSDT">BTC/USDT</option>
<option value="ETHUSDT">ETH/USDT</option>
<option value="SOLUSDT">SOL/USDT</option>
<option value="BNBUSDT">BNB/USDT</option>
<option value="DOGEUSDT">DOGE/USDT</option>
</select>
<label>周期:</label>
<select id="intervalSelect" onchange="loadCryptoData()">
<option value="1m">1分钟</option>
<option value="15m">15分钟</option>
<option value="1h">1小时</option>
<option value="4h">4小时</option>
<option value="1d" selected>日线</option>
</select>
<button onclick="loadCryptoData()">刷新图表</button>
<div id="priceInfo" class="price-display">--</div>
</div>
<div id="chart"></div>
<script>
// === 配置区域 ===
const API_KEY = 'YOUR_API_KEY'; // TODO: 替换您的 Key
const BASE_URL = 'https://api.stocktv.top';
// 初始化图表 (黑色主题)
const chart = klinecharts.init('chart');
chart.setStyles('dark'); // 使用暗色主题适配加密货币风格
/**
* 加载数据主函数
*/
async function loadCryptoData() {
const symbol = document.getElementById('symbolSelect').value;
const interval = document.getElementById('intervalSelect').value;
const display = document.getElementById('priceInfo');
display.innerText = "加载中...";
// 1. 请求 K 线数据
const url = `${BASE_URL}/crypto/getKlines?symbol=${symbol}&interval=${interval}&key=${API_KEY}`;
console.log("请求地址:", url);
try {
const res = await fetch(url);
const json = await res.json();
if (json.code === 200 && json.data) {
// === 关键步骤:数据格式转换 ===
// 加密货币接口返回的是数组: [time, open, high, low, close, volume, ...]
// 需要映射为对象格式
const dataList = json.data.map(item => {
return {
timestamp: Number(item[0]), // 索引0: 时间戳
open: parseFloat(item[1]), // 索引1: 开盘
high: parseFloat(item[2]), // 索引2: 最高
low: parseFloat(item[3]), // 索引3: 最低
close: parseFloat(item[4]), // 索引4: 收盘
volume: parseFloat(item[5]) // 索引5: 成交量
};
});
// 排序
dataList.sort((a, b) => a.timestamp - b.timestamp);
// 渲染图表
chart.applyNewData(dataList);
// 更新页面上的最新价
if(dataList.length > 0) {
const last = dataList[dataList.length - 1];
display.innerText = `${symbol}: ${last.close}`;
}
} else {
alert("API 返回错误: " + json.message);
}
} catch (err) {
console.error(err);
alert("网络请求失败");
}
}
// 页面加载默认执行一次
loadCryptoData();
</script>
</body>
</html>
##4. 常见问题 (FAQ)Q1: 为什么 K 线图表是空白的?
A: 加密货币接口返回的数据是字符串类型的数组(例如
["66895.35", ...]),前端必须使用parseFloat()转换为数字,且必须按照正确的数组索引(0=时间, 1=开, 2=高, 3=低, 4=收, 5=量)进行提取。如果直接传给图表库通常会解析失败。
Q2: 如何获取更多交易对?
A: 调用
/crypto/pairlist?marketId=338&key=...接口。返回的列表非常长,建议在前端做分页处理或搜索功能。
更多推荐
所有评论(0)