取印度孟买指数(SENSEX)实时行情API对接指南
获取印度孟买指数(SENSEX)实时行情API对接指南
本文详细介绍如何通过API获取印度孟买敏感30指数(SENSEX)的实时行情数据,包含多种数据获取方式和代码示例
概述
印度孟买敏感30指数(SENSEX)是印度孟买证券交易所的主要股票市场指数,由30家规模大、流动性好的印度公司组成。本文介绍如何通过API接口获取SENSEX指数的实时行情数据,包括实时价格、涨跌幅、技术指标等信息。
SENSEX指数简介
- 全称: S&P BSE SENSEX
- 成分股数量: 30只
- 基准日期: 1978-1979年 = 100点
- 计算方式: 自由流通市值加权
- 交易所: 孟买证券交易所(BSE)
- 交易时间: 印度标准时间 9:15-15:30
API接口详情
1. 获取印度市场所有指数(包含SENSEX)
接口地址: GET /stock/indices
请求参数:
GET https://api.stocktv.top/stock/indices?countryId=14&key=您的API密钥
参数说明:
countryId: 国家ID,印度为14key: API访问密钥
响应示例:
{
"code": 200,
"message": "操作成功",
"data": [
{
"id": 17940,
"name": "S&P BSE SENSEX",
"symbol": "SENSEX",
"last": 74250.65,
"high": 74500.60,
"low": 73800.45,
"chg": 450.85,
"chgPct": 0.61,
"changeDecimalPrecision": 2,
"changePercentageDecimalPrecision": 2,
"isOpen": true,
"flag": "IN",
"url": "/indices/s-p-bse-sensex",
"lastPairDecimal": 2,
"time": 1716458537
},
{
"id": 17941,
"name": "Nifty 50",
"symbol": "NSEI",
"last": 22500.35,
// ...其他指数数据
}
]
}
2. 通过ID直接查询SENSEX指数
接口地址: GET /stock/indicesById
请求参数:
GET https://api.stocktv.top/stock/indicesById?id=17940&key=您的API密钥
参数说明:
id: 指数ID,SENSEX的ID为17940key: API访问密钥
3. 获取SENSEX指数K线数据
接口地址: GET /stock/kline
请求参数:
GET https://api.stocktv.top/stock/kline?pid=17940&interval=P1D&key=您的API密钥
时间间隔参数:
PT5M: 5分钟PT15M: 15分钟PT1H: 1小时P1D: 1天(日线)P1W: 1周P1M: 1月
响应示例:
{
"code": 200,
"message": "操作成功",
"data": [
{
"time": 1719818400000,
"open": 73950.42,
"high": 74200.60,
"low": 73850.42,
"close": 74120.60,
"volume": 0,
"vo": 0
},
{
"time": 1719818460000,
"open": 74120.60,
"high": 74250.60,
"low": 74080.55,
"close": 74200.55,
"volume": 0,
"vo": 0
}
]
}
使用示例
Python获取SENSEX实时行情
import requests
import json
from datetime import datetime
class SensexAPI:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.stocktv.top"
def get_sensex_real_time(self):
"""获取SENSEX实时行情"""
url = f"{self.base_url}/stock/indicesById"
params = {
"id": 17940, # SENSEX指数ID
"key": self.api_key
}
try:
response = requests.get(url, params=params, timeout=10)
if response.status_code == 200:
data = response.json()
if data["code"] == 200:
return data["data"][0] # 返回SENSEX数据
return None
except Exception as e:
print(f"获取数据失败: {e}")
return None
def get_sensex_history(self, interval="P1D"):
"""获取SENSEX历史K线数据"""
url = f"{self.base_url}/stock/kline"
params = {
"pid": 17940,
"interval": interval,
"key": self.api_key
}
try:
response = requests.get(url, params=params, timeout=10)
if response.status_code == 200:
data = response.json()
if data["code"] == 200:
return data["data"]
return None
except Exception as e:
print(f"获取历史数据失败: {e}")
return None
# 使用示例
if __name__ == "__main__":
API_KEY = "您的API密钥"
sensex_api = SensexAPI(API_KEY)
# 获取实时行情
real_time_data = sensex_api.get_sensex_real_time()
if real_time_data:
print("=== SENSEX实时行情 ===")
print(f"指数名称: {real_time_data['name']}")
print(f"最新价格: {real_time_data['last']}")
print(f"涨跌: {real_time_data['chg']} ({real_time_data['chgPct']}%)")
print(f"最高价: {real_time_data['high']}")
print(f"最低价: {real_time_data['low']}")
print(f"更新时间: {datetime.fromtimestamp(real_time_data['time'])}")
# 获取日线数据
daily_data = sensex_api.get_sensex_history("P1D")
if daily_data:
print(f"\n获取到{len(daily_data)}条日线数据")
JavaScript获取SENSEX数据
// 使用Fetch API获取SENSEX数据
const API_KEY = '您的API密钥';
const BASE_URL = 'https://api.stocktv.top';
// 获取SENSEX实时行情
async function getSensexRealTime() {
const url = `${BASE_URL}/stock/indicesById?id=17940&key=${API_KEY}`;
try {
const response = await fetch(url);
const data = await response.json();
if (data.code === 200) {
const sensexData = data.data[0];
console.log('SENSEX实时行情:', sensexData);
return sensexData;
}
return null;
} catch (error) {
console.error('获取SENSEX数据失败:', error);
return null;
}
}
// 获取SENSEX历史数据
async function getSensexHistory(interval = 'P1D') {
const url = `${BASE_URL}/stock/kline?pid=17940&interval=${interval}&key=${API_KEY}`;
try {
const response = await fetch(url);
const data = await response.json();
if (data.code === 200) {
return data.data;
}
return null;
} catch (error) {
console.error('获取历史数据失败:', error);
return null;
}
}
// 使用示例
getSensexRealTime().then(data => {
if (data) {
document.getElementById('sensex-price').textContent = data.last;
document.getElementById('sensex-change').textContent =
`${data.chg} (${data.chgPct}%)`;
document.getElementById('sensex-time').textContent =
new Date(data.time * 1000).toLocaleString();
}
});
// 定时更新数据(每30秒)
setInterval(() => {
getSensexRealTime().then(updateUI);
}, 30000);
WebSocket实时推送示例
// WebSocket实时获取SENSEX数据
const wsUri = "wss://ws-api.stocktv.top/connect?key=您的API密钥";
const websocket = new WebSocket(wsUri);
websocket.onopen = function(event) {
console.log("Connected to WebSocket server");
// 可以发送订阅请求特定指数
};
websocket.onmessage = function(event) {
const data = JSON.parse(event.data);
if (data.pid === "17940") { // SENSEX的PID
console.log("SENSEX实时推送:", data);
// 更新页面数据
updateSensexDisplay(data);
}
};
function updateSensexDisplay(data) {
document.getElementById('sensex-last').textContent = data.last_numeric;
document.getElementById('sensex-change').textContent =
`${data.pc} (${data.pcp}%)`;
document.getElementById('sensex-time').textContent =
new Date().toLocaleTimeString();
// 根据涨跌设置颜色
const changeElement = document.getElementById('sensex-change');
if (data.pc > 0) {
changeElement.style.color = 'green';
} else if (data.pc < 0) {
changeElement.style.color = 'red';
} else {
changeElement.style.color = 'black';
}
}
websocket.onclose = function(event) {
console.log("Disconnected from WebSocket server");
// 可以尝试重连
};
websocket.onerror = function(event) {
console.log("WebSocket error:", event);
};
数据字段说明
| 字段名称 | 说明 | 示例值 |
|---|---|---|
id |
指数ID | 17940 |
name |
指数名称 | "S&P BSE SENSEX" |
symbol |
指数代码 | "SENSEX" |
last |
最新价格 | 74250.65 |
high |
最高价 | 74500.60 |
low |
最低价 | 73800.45 |
chg |
涨跌额 | 450.85 |
chgPct |
涨跌幅 | 0.61 |
isOpen |
是否开盘 | true |
time |
时间戳 | 1716458537 |
注意事项
- API密钥:需要联系服务商获取有效的API密钥
- 请求频率:注意API的请求频率限制,避免过于频繁的请求
- 时区问题:SENSEX交易时间按照印度标准时间(IST)
- 错误处理:添加适当的错误处理机制
- 数据延迟:实时数据可能有微小延迟,通常为1-3秒
- 市场状态:注意印度市场的交易日和交易时间
常见问题
Q: 如何区分SENSEX和Nifty 50指数?
A: SENSEX的symbol为"SENSEX",而Nifty 50的symbol为"NSEI"
Q: 数据更新频率是多少?
A: 实时数据通常每1-5秒更新一次
Q: 是否提供历史数据下载?
A: 可以通过K线接口获取历史数据,支持导出CSV格式
Q: 如何获取SENSEX成分股信息?
A: 需要通过其他接口获取印度股票数据,然后筛选出SENSEX成分股
总结
通过本文介绍的API接口,开发者可以轻松获取印度孟买SENSEX指数的实时行情数据和历史数据。这些接口支持多种编程语言调用,适合用于开发金融分析应用、投资决策工具或实时行情展示系统。
无论是个人投资者还是金融机构,都可以利用这些API构建专业的印度市场分析工具,实时跟踪SENSEX指数的变化趋势。
版权声明:本文涉及API接口由相应服务商提供,使用前请确保已获得合法授权。本文仅做技术交流用途,不构成任何投资建议。

浙公网安备 33010602011771号