多国金融市场数据对接指南(印度、印尼、韩国)
一、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=Equities3.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 = response.json()["data"]["records"]
return results2. 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. 敏感字段处理
// 印尼股东信息脱敏function maskIdNumber(id) { return id.replace(/(? B{StockTV API网关} B --> C[印度数据节点] B --> D[印尼数据节点] B --> E[韩国数据节点] C & D & E --> F[(统一数据缓存)] F --> G[业务系统]
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]