StockTV印度股票API实战教学:快速接入NSE/BSE实时行情数据
随着全球资产配置需求的增长,印度股市作为近年来表现最强劲的新兴市场之一,吸引了众多开发者和投资者的关注。印度国家证券交易所(NSE)和孟买证券交易所(BSE)已成为全球投资者布局南亚市场的重要平台。本文将基于StockTV API,手把手教你如何快速对接印度股票数据,构建专业的金融应用。
一、准备工作:获取API密钥与基础配置
1.1 获取API Key
所有StockTV API请求都需要有效的API密钥进行身份验证。您可以通过以下方式获取:
- 联系官方客服:Telegram @stocktvpaopao
- 访问官方网站:pao.stocktv.top
API密钥格式示例:MY4b781f618e3f43c4b055f25fa61941ad
1.2 基础参数配置
在StockTV系统中,印度市场的唯一标识符为countryId=14。主要交易所ID如下:
- NSE(印度国家证券交易所):
exchangeId=46 - BSE(孟买证券交易所):
exchangeId=74
基础URL:https://api.stocktv.top
WebSocket URL:wss://ws-api.stocktv.top/connect
二、核心API接口详解
2.1 获取印度股票市场列表
这是对接的第一步,用于获取印度市场的股票基础信息。
接口地址:GET /stock/stocks
请求参数:
{
"countryId": 14, # 必填,印度市场固定ID
"pageSize": 100, # 每页数量,默认10
"page": 1, # 页码,默认1
"exchangeId": 46, # 可选,交易所ID
"key": "YOUR_API_KEY" # 必填,您的API密钥
}
Python示例代码:
import requests
def get_indian_stocks():
url = "https://api.stocktv.top/stock/stocks"
params = {
"countryId": 14,
"pageSize": 100,
"exchangeId": 46, # NSE交易所
"key": "YOUR_API_KEY"
}
response = requests.get(url, params=params)
data = response.json()
if data['code'] == 200:
stocks = data['data']['records']
for stock in stocks[:5]: # 显示前5条
print(f"代码: {stock['symbol']} | 名称: {stock['name']} | 最新价: {stock['last']} | 涨跌幅: {stock['chgPct']}%")
return data
# 调用函数
get_indian_stocks()
响应字段说明:
id: 股票唯一ID(后续接口使用)symbol: 股票代码(如"RELIANCE"、"TCS")name: 公司名称last: 最新价chgPct: 涨跌幅百分比volume: 成交量high/low: 当日最高/最低价marketCap: 市值(卢比)
2.2 查询指定股票实时行情
获取单只或多只股票的详细实时数据。
接口地址:GET /stock/queryStocks
请求参数:
{
"id": 7310, # 股票ID(从列表接口获取)
"key": "YOUR_API_KEY"
}
响应示例:
{
"code": 200,
"data": [{
"id": 7310,
"symbol": "RELIANCE",
"name": "Reliance Industries Ltd",
"last": 2856.75,
"chg": 12.50,
"chgPct": 0.51,
"high": 2468.20,
"low": 2442.10,
"volume": 4521890,
"open": false,
"exchangeId": 46,
"fundamentalMarketCap": 16500000000000,
"fundamentalRevenue": "8.3T",
"technicalDay": "buy"
}]
}
2.3 获取印度指数数据
监控印度大盘指数是分析市场情绪的关键。
接口地址:GET /stock/indices
请求示例:
def get_india_indices():
url = "https://api.stocktv.top/stock/indices"
params = {
"countryId": 14,
"key": "YOUR_API_KEY"
}
response = requests.get(url, params=params)
return response.json()
# 主要指数:
# - Nifty 50: symbol="NSEI"
# - BSE Sensex: symbol="SENSEX"
2.4 获取K线历史数据
支持多种时间维度的K线数据,用于技术分析。
接口地址:GET /stock/kline
参数配置:
{
"pid": 7310, # 股票ID
"interval": "P1D", # 时间粒度
"key": "YOUR_API_KEY"
}
支持的时间粒度:
PT5M: 5分钟线PT15M: 15分钟线PT1H: 1小时线P1D: 日线P1W: 周线P1M: 月线
2.5 印度股市排行榜
实时获取市场异动个股,捕捉投资机会。
接口地址:GET /stock/updownList
参数说明:
{
"countryId": 14,
"type": 1, # 1=涨幅榜,2=跌幅榜
"key": "YOUR_API_KEY"
}
2.6 IPO新股日历
印度IPO市场非常活跃,实时掌握新股动态是投资类应用的刚需。
接口地址:GET /stock/getIpo
参数配置:
{
"countryId": 14,
"type": 1, # 1=未上市新股,2=已上市新股
"key": "YOUR_API_KEY"
}
三、高级功能:WebSocket实时数据推送
对于交易终端、高频监控等需要毫秒级延迟的场景,StockTV提供了WebSocket实时推送服务。
3.1 WebSocket连接配置
// JavaScript示例
const API_KEY = 'YOUR_API_KEY';
const ws = new WebSocket(`wss://ws-api.stocktv.top/connect?key=${API_KEY}`);
// 连接建立
ws.onopen = function(event) {
console.log('WebSocket连接已建立');
// 发送订阅请求
const subscribeMessage = {
action: "subscribe",
symbols: ["PID:7310", "PID:946725"] // 要订阅的产品ID列表
};
ws.send(JSON.stringify(subscribeMessage));
};
// 接收实时数据
ws.onmessage = function(event) {
const data = JSON.parse(event.data);
if (data.type === 'stock') {
console.log(`[${data.symbol}] 价格: ${data.last} 涨跌幅: ${data.pcp}%`);
}
};
// 心跳维持(每30秒)
setInterval(() => ws.send("ping"), 30000);
3.2 Python WebSocket客户端
import websocket
import json
import threading
API_KEY = "YOUR_API_KEY"
WS_URL = f"wss://ws-api.stocktv.top/connect?key={API_KEY}"
def on_message(ws, message):
"""处理实时行情"""
data = json.loads(message)
if data.get('type') == 'stock':
print(f"[{data['symbol']}] 价格: {data['last']} 涨跌幅: {data['pcp']}%")
def on_open(ws):
"""连接建立后订阅股票"""
subscribe_msg = json.dumps({
"action": "subscribe",
"symbols": ["RELIANCE", "TCS", "NSEI"] # 印度信实工业、TATA、Nifty50指数
})
ws.send(subscribe_msg)
def send_heartbeat(ws):
"""每30秒发送心跳包"""
while True:
try:
ws.send(json.dumps({"action": "ping"}))
time.sleep(30)
except:
break
# 建立连接
ws = websocket.WebSocketApp(WS_URL,
on_open=on_open,
on_message=on_message)
ws.run_forever()
四、完整实战项目:印度股票监控系统
下面是一个完整的Python项目示例,实现印度股票数据监控:
import requests
import pandas as pd
import time
from datetime import datetime
class IndiaStockMonitor:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.stocktv.top"
def get_market_overview(self):
"""获取印度市场概览"""
url = f"{self.base_url}/stock/stocks"
params = {
"countryId": 14,
"pageSize": 20,
"key": self.api_key
}
try:
response = requests.get(url, params=params)
data = response.json()
if data['code'] == 200:
df = pd.DataFrame(data['data']['records'])
print(f"=== 印度市场概览 ({datetime.now().strftime('%Y-%m-%d %H:%M:%S')}) ===")
print(f"总股票数: {data['data']['total']}")
print("\nTop 10 股票:")
print(df[['symbol', 'name', 'last', 'chgPct', 'volume']].head(10))
return df
else:
print(f"请求失败: {data['message']}")
return None
except Exception as e:
print(f"网络错误: {e}")
return None
def monitor_specific_stocks(self, stock_ids, interval=60):
"""监控特定股票"""
print(f"开始监控 {len(stock_ids)} 只股票,间隔 {interval} 秒")
while True:
url = f"{self.base_url}/stock/queryStocks"
params = {
"id": ",".join(map(str, stock_ids)),
"key": self.api_key
}
try:
response = requests.get(url, params=params)
data = response.json()
if data['code'] == 200:
print(f"\n=== 实时行情 ({datetime.now().strftime('%H:%M:%S')}) ===")
for stock in data['data']:
status = "🟢" if stock['chgPct'] > 0 else "🔴"
print(f"{status} {stock['symbol']}: {stock['last']} ({stock['chgPct']}%)")
time.sleep(interval)
except KeyboardInterrupt:
print("\n监控已停止")
break
except Exception as e:
print(f"监控错误: {e}")
time.sleep(interval)
# 使用示例
if __name__ == "__main__":
monitor = IndiaStockMonitor("YOUR_API_KEY")
# 获取市场概览
df = monitor.get_market_overview()
if df is not None:
# 选择前5只股票进行监控
top_stocks = df['id'].head(5).tolist()
monitor.monitor_specific_stocks(top_stocks, interval=30)
五、StockTV API的优势总结
5.1 统一架构,全球覆盖
StockTV采用统一的API架构,仅需变更countryId参数,即可在同一套代码逻辑下切换至美国、日本、越南等全球11个国家的股票市场。
5.2 极致实时性
- HTTP API:适用于列表展示、基础行情、离线分析
- WebSocket:毫秒级推送,服务器在价格变动的瞬间主动推送至客户端,延迟降至最低
5.3 数据全面性
除了实时行情,还提供:
- 深度基本面数据(PE比率、市值、收入等)
- 技术指标分析(技术评级、年度表现)
- IPO新股日历与公司详细信息
- 期权链、机构持仓等专业数据
5.4 开发者友好
- 零成本起步:提供免费测试Key和技术支持
- 灵活数据格式:全接口返回轻量级JSON
- 完整文档:详细的接口文档和代码示例
- 多语言支持:提供Python、JavaScript等多种语言的SDK
六、注意事项与最佳实践
6.1 频率限制
- REST API:建议≤10次/分钟
- WebSocket:实时推送,无次数限制
6.2 时区处理
印度市场使用IST时区(UTC+5:30),交易时段为09:15-15:30 IST。
from pytz import timezone
ist = timezone('Asia/Kolkata') # 印度时区转换
6.3 错误处理
response = requests.get(url, params=params)
if response.status_code != 200:
print(f"Error {response.status_code}: {response.text}")
return None
6.4 数据缓存策略
对于非实时性要求的数据,建议实施缓存机制,减少API调用次数。
结语
通过StockTV API,开发者可以快速构建功能完善的印度股票分析系统、移动端行情APP或量化交易工具。印度股市的数字化投资时代已经到来,利用专业的API接口,您可以仅用几行代码,就让您的应用具备与华尔街终端同步的印度市场洞察力。
立即开始集成,抢占南亚市场先机!如需获取API Key或技术支持,请通过以下方式联系StockTV官方:
- Telegram: @stocktvpaopao
- 官网: pao.stocktv.top/
提示:印度股票交易时段(IST 9:15-15:30)建议启用WebSocket实时推送,确保行情零延迟。通过StockTV API,您可以高效触达1.4亿印度投资者市场,为您的金融产品注入强大的数据动力。