多国金融市场数据对接指南(印度、印尼、韩国)
一、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 requestscountries = {"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:30 | 03:30-10:00 |
印尼 | WIB (UTC+7) | 09:00-16:00 | 02:00-09:00 |
韩国 | KST (UTC+9) | 09:00-15:30 | 00: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. 敏感字段处理
// 印尼股东信息脱敏
function maskIdNumber(id) {return id.replace(/(?<=.{3}).(?=.{4})/g, '*');
}
六、最佳实践建议
-
缓存策略:
- 静态数据(如公司信息):TTL 24小时
- 行情数据:TTL 15秒(符合各交易所规定)
-
错误重试机制:
from tenacity import retry, stop_after_attempt@retry(stop=stop_after_attempt(3))
def get_market_data():response = requests.get(url)response.raise_for_status()return response.json()
- 监控指标:
- 印度节点延迟 ≤300ms
- 印尼数据完整性 ≥99.9%
- 韩国API成功率 ≥99.5%
七、技术支持
StockTV官网
接口文档
对接demo
通过StockTV统一API,开发者可快速构建覆盖印、印尼、韩三国金融数据的应用系统。建议采用以下架构: