一、多国股票API核心能力
1. 覆盖国家与交易所
- 印度:NSE(国家证券交易所)、BSE(孟买交易所)
- 韩国:KRX(韩国交易所),支持股票如三星电子(
005930.KS
) - 泰国:SET(泰国证券交易所),需通过
countryId
参数过滤 - 其他:马来西亚(MYX)、印尼(IDX)、日本(JPX)等10+国家
2. 核心特性
- 无调用限制:支持7×24小时高频实时数据推送
- 双协议接入:
- WebSocket:毫秒级延迟的行情更新(股票/指数/期货)
- RESTful API:批量获取历史K线、财务数据
- 免费测试Key:官网申请即用,无企业认证门槛
二、WebSocket实时对接实战(Python + Node.js双语言)
1. Python示例:实时订阅多国股票
import websocket, json, threading
# 配置参数(替换为你的API Key)
API_KEY = "YOUR_API_KEY"
WS_URL = f"wss://ws-api.stocktv.top/connect?key={API_KEY}"
def on_message(ws, message):
data = json.loads(message)
if data.get('type') == 'stock':
symbol = data['symbol']
# 过滤特定国家数据(如印度RELIANCE、韩国三星)
if symbol in ["RELIANCE", "005930.KS"]:
print(f"[{symbol}] 价格: {data['last']} 涨跌幅: {data['chgPct']}")
def on_open(ws):
# 启动心跳线程
threading.Thread(target=send_heartbeat, args=(ws,), daemon=True).start()
# 订阅股票(支持多国混合订阅)
ws.send(json.dumps({"action": "subscribe", "symbols": ["RELIANCE", "005930.KS"]}))
def send_heartbeat(ws):
"""每30秒发送心跳包维持连接"""
while True:
try:
ws.send(json.dumps({"action": "ping"}))
time.sleep(30)
except: break
# 启动连接(含自动重连)
while True:
try:
ws = websocket.WebSocketApp(WS_URL, on_message=on_message, on_open=on_open)
ws.run_forever()
except Exception as e:
print(f"连接断开,5秒后重连: {e}")
time.sleep(5)
2. Node.js示例:过滤泰国SET数据
const WebSocket = require('ws');
const ws = new WebSocket('wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY');
// 订阅泰国股票(需先通过REST接口获取pid列表)
ws.on('open', () => {
ws.send(JSON.stringify({
action: 'subscribe',
countryId: 44 // 泰国countryId=44
}));
});
// 处理实时数据
ws.on('message', (data) => {
const quote = JSON.parse(data);
if (quote.countryId === 44) { // 过滤泰国数据
console.log(`[${quote.symbol}] ${quote.last} THB`);
}
});
三、关键参数与数据处理技巧
1. 国家代码映射表
国家 | countryId | 交易所代码示例 |
---|---|---|
印度 | 14 | RELIANCE (NSE) |
韩国 | 7 | 005930.KS (KRX) |
泰国 | 44 | ADVANC.BK (SET) |
马来西亚 | 42 | PETRONAS (MYX) |
2. 核心数据字段解析
{
"pid": "992844", // 产品ID(唯一标识)
"last": "239.34", // 最新价
"chgPct": "+1.64%", // 涨跌幅
"volume": "3672800", // 成交量
"timestamp": 1717728251 // Unix时间戳(秒级)
}
时区处理:时间戳需转换为目标国家时区(如泰国UTC+7)
四、生产环境优化建议
- 连接稳定性
- 实现断线自动重连(重试间隔建议5秒)
- 心跳包维持长连接(避免运营商链路回收)
- 高频数据处理
- Python:使用
asyncio
异步处理数据流,避免阻塞 - Node.js:连接池配置(
keepAlive: true, maxSockets: 20
)
- Python:使用
- 数据缓存
- 历史K线存储至本地数据库(如InfluxDB),减少重复请求
- 前端用
IndexedDB
缓存实时数据,优化渲染性能
五、免费Key申请与扩展方案
1. StockTV免费Key申请
- 访问 StockTV官网
- 联系客服发送申请邮件(说明用途:个人研究/量化测试)
- 获取Key(格式:
MY4b781f618e3f43c4b055f25fa61941ad
)
2. 其他API补充方案
服务 | 适用国家 | 实时性 | 限制 |
---|---|---|---|
Alpha Vantage | 泰国(SET.BK) | 15分钟延迟 | 免费版5请求/分钟 |
Yahoo Finance | 韩国、日本 | 15分钟延迟 | 完全免费 |
IEX Cloud | 美国为主 | 实时 | 付费($9/月起) |
注意事项
- 免费Key仅限测试,商业用途需购买企业授权
- 实时数据仅在交易时段更新(如韩国KRX:UTC+9 9:00-15:30)
通过本文方案,开发者可快速接入印度、泰国、韩国等市场的实时行情,为量化交易、跨市场分析提供底层数据支持。建议结合业务场景选择协议(WebSocket实时推送 > REST轮询),并关注数据合规性要求。