一、StockTV多国数据对接概述
StockTV提供统一的API接口规范对接全球金融市场数据,本文重点介绍印度(国家ID:14)、印尼(国家ID:42)、韩国(国家ID:xx)的股票市场对接方案。
共同特性
- 统一认证:所有接口需key参数
- 数据格式:JSON标准化响应
- 协议支持:HTTP/WebSocket双通道
- 错误代码:200成功,401密钥无效,429限流
二、分国别对接规范
1. 印度市场(countryId=14)
1.1 市场列表接口
- GET /stock/stocks?countryId=14&pageSize=10
复制代码 特色字段:- {
- "exchangeId": 46, // 46=NSE, 74=BSE
- "symbol": "IGSL",
- "technicalDay": "strong_buy" // 技术指标
- }
复制代码 1.2 专属接口
- IPO日历:/india/ipo
- 指数列表:包含Nifty50(NSEI)、Sensex(BSESN)
2. 印尼市场(countryId=42)
2.1 特色数据字段
- {
- "flag": "ID",
- "lastPairDecimal": 3, // 价格小数位
- "url": "/equities/media-chinese-international-ltd" // 详情页路径
- }
复制代码 2.2 棕榈油期货
- GET /futures/list?symbol=FCPO
复制代码 响应包含马棕油期货实时行情
3. 韩国市场(需联系客服获取countryId)
3.1 KOSPI成分股
- GET /stock/stocks?countryId=KR_ID&pairType=Equities
复制代码 3.2 半导体股票筛选
- // 使用查询接口过滤
- {
- "sector": "Technology",
- "industry": "Semiconductors"
- }
复制代码 三、统一接口使用范例
1. 多国行情同步获取
- import requests
- countries = {
- "India": {"id": 14, "key": "YOUR_KEY"},
- "Indonesia": {"id": 42, "key": "YOUR_KEY"},
- "Korea": {"id": "KR_ID", "key": "YOUR_KEY"}
- }
- def get_top_stocks():
- results = {}
- for country, params in countries.items():
- url = f"https://api.stocktv.top/stock/stocks?countryId={params['id']}&pageSize=5"
- response = requests.get(url, params={"key": params["key"]})
- results[country] = response.json()["data"]["records"]
- return results
复制代码 2. WebSocket多国订阅
- const ws = new WebSocket('wss://ws-api.stocktv.top/connect?key=YOUR_KEY');
- // 订阅三国龙头股
- const subscribeMsg = {
- "action": "subscribe",
- "pids": [
- "7310", // 印度Reliance
- "50123", // 印尼BBCA
- "KR_005930" // 韩国三星
- ]
- };
- ws.send(JSON.stringify(subscribeMsg));
- ws.onmessage = (event) => {
- const data = JSON.parse(event.data);
- // 统一数据结构
- console.log(`${data.pid} 最新价: ${data.last_numeric}`);
- };
复制代码 四、国别化处理要点
1. 市场时间处理
国家时区开市时间(本地)对应UTC时间印度IST (UTC+5:30)09:00-15:3003:30-10:00印尼WIB (UTC+7)09:00-16:0002:00-09:00韩国KST (UTC+9)09:00-15:3000:00-06:30代码示例:- public class MarketHours {
- public static boolean isMarketOpen(String countryCode) {
- ZonedDateTime now = ZonedDateTime.now(ZoneId.of(getTimeZone(countryCode)));
- return now.getDayOfWeek().getValue() < 6
- && now.toLocalTime().isAfter(getOpenTime(countryCode))
- && now.toLocalTime().isBefore(getCloseTime(countryCode));
- }
-
- private static String getTimeZone(String countryCode) {
- return switch(countryCode) {
- case "IN" -> "Asia/Kolkata";
- case "ID" -> "Asia/Jakarta";
- case "KR" -> "Asia/Seoul";
- default -> "UTC";
- };
- }
- }
复制代码 2. 货币单位转换
- # 统一转换为USD
- def convert_to_usd(price, currency):
- rates = {'INR': 0.012, 'IDR': 0.000065, 'KRW': 0.00075}
- return price * rates.get(currency, 1)
复制代码 五、合规要求
1. 数据使用限制
国家关键限制StockTV解决方案印度SEBI数据需授权提供已签约的数据转发服务印尼IDX实时数据禁止缓存WebSocket直连避免存储韩国KRX要求显示数据来源响应头包含X-Data-Source字段2. 敏感字段处理
[code]// 印尼股东信息脱敏function maskIdNumber(id) { return id.replace(/(? B{StockTV API网关} B --> C[印度数据节点] B --> D[印尼数据节点] B --> E[韩国数据节点] C & D & E --> F[(统一数据缓存)] F --> G[业务系统]
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |