与股票接口不同,加密货币接口对接币安 (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 KeymarketId: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 线数据并渲染图表。
<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>加密货币 K线演示 (Crypto)</title><scriptsrc="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><divclass="control-panel"><label>交易对:</label><selectid="symbolSelect"onchange="loadCryptoData()"><optionvalue="BTCUSDT">BTC/USDT</option><optionvalue="ETHUSDT">ETH/USDT</option><optionvalue="SOLUSDT">SOL/USDT</option><optionvalue="BNBUSDT">BNB/USDT</option><optionvalue="DOGEUSDT">DOGE/USDT</option></select><label>周期:</label><selectid="intervalSelect"onchange="loadCryptoData()"><optionvalue="1m">1分钟</option><optionvalue="15m">15分钟</option><optionvalue="1h">1小时</option><optionvalue="4h">4小时</option><optionvalue="1d"selected>日线</option></select><buttononclick="loadCryptoData()">刷新图表</button><divid="priceInfo"class="price-display">--</div></div><divid="chart"></div><script>// === 配置区域 ===constAPI_KEY='YOUR_API_KEY';// TODO: 替换您的 KeyconstBASE_URL='https://api.stocktv.top';// 初始化图表 (黑色主题)constchart=klinecharts.init('chart');chart.setStyles('dark');// 使用暗色主题适配加密货币风格/** * 加载数据主函数 */asyncfunctionloadCryptoData(){constsymbol=document.getElementById('symbolSelect').value;constinterval=document.getElementById('intervalSelect').value;constdisplay=document.getElementById('priceInfo');display.innerText="加载中...";// 1. 请求 K 线数据consturl=`${BASE_URL}/crypto/getKlines?symbol=${symbol}&interval=${interval}&key=${API_KEY}`;console.log("请求地址:",url);try{constres=awaitfetch(url);constjson=awaitres.json();if(json.code===200&&json.data){// === 关键步骤:数据格式转换 ===// 加密货币接口返回的是数组: [time, open, high, low, close, volume, ...]// 需要映射为对象格式constdataList=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){constlast=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=...接口。返回的列表非常长,建议在前端做分页处理或搜索功能。