文章大纲
- 引言:为什么关注印度BSE交易所?
- 准备工作:获取API密钥与理解关键参数
- 核心API接口详解
- 获取BSE股票列表
- 查询特定股票实时行情
- 获取指数数据(如S&P BSE SENSEX)
- 获取K线数据
- 高级功能与实时数据
- IPO新股日历
- 涨跌排行榜
- WebSocket实时推送
- 实战代码示例(Python)
- 注意事项与最佳实践
- 频率限制
- 时区处理
- 错误处理
- 结语
引言:为什么关注印度BSE交易所?
印度孟买证券交易所(BSE)是亚洲最古老的证券交易所,也是印度两大主要证券交易市场之一。随着印度经济的快速增长,BSE市场吸引了大量全球投资者的目光。对于开发者而言,能够便捷地获取BSE的实时股票数据,是构建量化交易系统、投资分析平台或金融看板应用的关键第一步。
本文将基于 StockTV 提供的 API,详细讲解如何快速、稳定地对接印度BSE交易所的股票数据接口,涵盖从获取API密钥、查询实时行情到订阅实时推送的全流程,并提供完整的Python代码示例。
准备工作:获取API密钥与理解关键参数
在开始调用API之前,需要完成两项准备:
- 获取API Key:所有接口调用都需要在请求参数中携带有效的API Key进行身份验证。你可以通过官方提供的联系方式(如Telegram)申请密钥。密钥格式通常类似
MY4b781f618e3f43c4b055f25fa61941ad。 - 理解关键参数:对接印度BSE市场,以下两个参数至关重要:
countryId=14:这代表印度市场,是几乎所有接口的必填参数。exchangeId=74:这是BSE(孟买证券交易所)在系统中的唯一标识符。另一个主要交易所NSE的ID是46。
API基础地址为:https://api.stocktv.top。
核心API接口详解
1. 获取BSE股票列表
这是获取数据的第一步,目的是得到BSE上市公司的基本信息和唯一标识符(id或pid),后续查询详细行情都需要用到它。
- 接口地址:
GET /stock/stocks 请求参数:
| 参数名 | 必填 | 说明 |
| :--- | :--- | :--- |
|countryId| 是 | 印度市场ID,固定为14|
|exchangeId| 否 | BSE交易所ID,此处应填74|
|pageSize| 否 | 每页数量 |
|page| 否 | 页码 |
|key| 是 | 你的API密钥 |返回示例:返回的JSON数据中,
data.records数组包含了股票列表,每个股票对象都有id(后续接口中的pid)、symbol(股票代码)、name(公司名称)、last(最新价)、chgPct(涨跌幅)等关键字段。
2. 查询特定股票实时行情
在已知股票ID (pid)、代码 (symbol) 或名称 (name) 的情况下,可以直接查询其最新行情。
- 接口地址:
GET /stock/queryStocks - 请求参数:可使用
id、symbol、name中的一个或多个进行查询。
3. 获取指数数据(如S&P BSE SENSEX)
S&P BSE SENSEX(敏感30指数)是BSE市场的风向标。通过此接口可以获取其实时点位和涨跌幅。
- 接口地址:
GET /stock/indices - 请求参数:
countryId=14。 - 返回示例:从返回的指数列表中,可以找到
name为 "S&P BSE SENSEX" 的指数数据。
4. 获取K线数据
这是绘制图表进行技术分析的核心接口,支持从1分钟到月线等多种时间粒度。
- 接口地址:
GET /stock/kline 请求参数:
| 参数名 | 必填 | 说明 |
| :--- | :--- | :--- |
|pid| 是 | 股票的唯一ID |
|interval| 是 | 时间间隔,例如PT15M(15分钟),P1D(日线) |
|key| 是 | 你的API密钥 |返回示例:接口返回指定时间周期的K线数据数组,每条数据包含时间戳 (
time)、开盘价 (open)、最高价 (high)、最低价 (low)、收盘价 (close) 和成交量 (volume)。
高级功能与实时数据
IPO新股日历
印度IPO市场活跃,此接口可用于获取已上市或即将上市的新股信息。
- 接口地址:
GET /stock/getIpo - 请求参数:
countryId=14,type=1(未上市)或type=2(已上市)。
涨跌排行榜
快速发现市场中的热点股票。
- 接口地址:
GET /stock/updownList - 请求参数:
countryId=14,type参数可指定榜单类型(1=涨幅榜,2=跌幅榜,3=涨停榜,4=跌停榜)。
WebSocket实时推送
对于需要低延迟实时数据的应用(如交易终端),WebSocket是比反复轮询REST API更高效的选择。
- 连接地址:
wss://ws-api.stocktv.top/connect?key=YOUR_KEY。 - 使用流程:建立连接后,发送订阅消息指定要关注的股票ID (
pids),服务器便会持续推送这些股票的实时行情变动。需要定期发送心跳消息(如"ping")以保持连接。
实战代码示例(Python)
以下是一个完整的Python示例,演示如何获取BSE股票列表和SENSEX指数数据。
import requests
# 配置信息
API_KEY = "YOUR_API_KEY" # 请替换为你的真实API Key
BASE_URL = "https://api.stocktv.top"
COUNTRY_ID = 14 # 印度
BSE_EXCHANGE_ID = 74 # BSE交易所
def get_bse_stocks(page_size=20):
"""
获取BSE股票列表
"""
url = f"{BASE_URL}/stock/stocks"
params = {
"countryId": COUNTRY_ID,
"exchangeId": BSE_EXCHANGE_ID,
"pageSize": page_size,
"page": 1,
"key": API_KEY
}
try:
response = requests.get(url, params=params)
response.raise_for_status() # 如果请求失败会抛出HTTPError异常
data = response.json()
if data.get('code') == 200:
stocks = data['data']['records']
print("BSE股票列表(前{}条):".format(page_size))
for stock in stocks:
print(f"股票代码: {stock['symbol']}, 名称: {stock['name']}, 最新价: {stock['last']}, 涨跌幅: {stock['chgPct']}%")
return stocks
else:
print("请求失败:", data.get('message'))
return None
except requests.exceptions.RequestException as e:
print("网络请求错误:", e)
return None
def get_sensex_index():
"""
获取S&P BSE SENSEX指数数据
"""
url = f"{BASE_URL}/stock/indices"
params = {
"countryId": COUNTRY_ID,
"key": API_KEY
}
try:
response = requests.get(url, params=params)
data = response.json()
if data.get('code') == 200:
indices = data['data']
for index in indices:
if index['name'] == 'S&P BSE SENSEX':
print(f"\nS&P BSE SENSEX 指数:")
print(f"最新点位: {index['last']}")
print(f"涨跌: {index['chg']}")
print(f"涨跌幅: {index['chgPct']}%")
return index
print("未找到SENSEX指数数据")
return None
else:
print("请求指数数据失败:", data.get('message'))
return None
except Exception as e:
print("获取指数数据时发生错误:", e)
return None
# 执行示例
if __name__ == "__main__":
stocks = get_bse_stocks()
sensex_data = get_sensex_index()
注意事项与最佳实践
- 频率限制:REST API通常有调用频率限制(例如每分钟不超过10次请求),需合理安排请求间隔,避免触发限流。
- 时区处理:印度标准时间(IST)为UTC+5:30,在处理时间戳数据时需要注意时区转换。
- 错误处理:健壮的程序必须包含错误处理逻辑,检查HTTP状态码和响应体中的
code字段(200表示成功,非200需处理错误)。 - 数据缓存:对于不经常变动的数据(如股票列表、公司信息),可以考虑在本地实现缓存机制,以减少API调用次数。
结语
通过 StockTV API,我们可以以标准化的方式高效接入印度BSE交易所的丰富数据,从基础的实时行情到深度的K线和基本面信息。本文介绍的接口和代码示例为开发者提供了一个坚实的起点,助力快速构建面向印度市场的金融应用。
希望这篇指南对你有所帮助!如果在对接过程中遇到任何技术问题,建议查阅官方文档或与API提供方的技术支持团队联系。