一、API概述
StockTV API为印度股票市场提供全面的数据解决方案:
全面数据覆盖:支持印度国家证券交易所(NSE,交易所ID:46)和孟买证券交易所(BSE,交易所ID:74)的全市场股票实时行情、深度数据、历史K线、指数、IPO信息等,覆盖1800+ NSE股票和5000+ BSE股票。
低延迟高性能:WebSocket协议提供毫秒级延迟的实时行情推送。
双协议支持:同时提供RESTful API用于查询静态数据和历史信息,WebSocket用于实时数据推送,满足不同场景需求。
二、快速接入准备
1. 获取API密钥
访问StockTV官网可以获取测试API Key。
2. 基础配置
import os
from dotenv import load_dotenv
load_dotenv() # 加载.env文件
API_KEY = os.getenv("STOCKTV_API_KEY")
BASE_URL = "https://api.stocktv.top"
INDIA_COUNTRY_ID = 14 # 印度国家代码
NSE_EXCHANGE_ID = 46 # NSE交易所代码
BSE_EXCHANGE_ID = 74 # BSE交易所代码
三、核心接口详解
1. 获取印度股票列表
接口地址:GET /stock/stocks
请求参数:
-
countryId:国家ID,印度为14(必填) -
exchangeId:交易所ID,46=NSE,74=BSE(可选) -
pageSize:每页数量,默认10 -
page:页码,默认1 -
key:API密钥(必填)
代码示例:
import requests
def get_indian_stocks():
url = f"{BASE_URL}/stock/stocks"
params = {
"countryId": INDIA_COUNTRY_ID,
"pageSize": 100,
"page": 1,
"key": API_KEY
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
return data["data"]["records"]
else:
print(f"请求失败: {response.status_code}")
return None
返回示例:
{
"code": 200,
"message": "操作成功",
"data": {
"records": [
{
"id": 41602,
"symbol": "TCS",
"name": "Tata Consultancy",
"last": 3856.15,
"chg": 12.45,
"chgPct": 0.32,
"high": 3872.30,
"low": 3825.60,
"volume": 1254875,
"exchangeId": 46,
"countryId": 14,
"open": true
}
],
"total": 1850
}
}
2. 查询特定股票
接口地址:GET /stock/queryStocks
请求参数:
-
id:股票ID(可选) -
symbol:股票代码,如"RELIANCE"(可选) -
name:股票名称(可选) -
key:API密钥(必填)
代码示例:
def query_indian_stock(symbol):
url = f"{BASE_URL}/stock/queryStocks"
params = {
"symbol": symbol,
"key": API_KEY
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
return data["data"]
else:
print(f"请求失败: {response.status_code}")
return None
3. 获取印度指数数据
接口地址:GET /stock/indices
请求参数:
-
countryId:国家ID,印度为14(必填) -
key:API密钥(必填)
代码示例:
def get_indian_indices():
url = f"{BASE_URL}/stock/indices"
params = {
"countryId": INDIA_COUNTRY_ID,
"key": API_KEY
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
return data["data"]
else:
print(f"请求失败: {response.status_code}")
return None
返回示例:
{
"code": 200,
"message": "操作成功",
"data": [
{
"symbol": "NSEI",
"name": "Nifty 50",
"last": 21678.35,
"chg": 123.45,
"chgPct": 0.57,
"isOpen": true
}
]
}
4. 获取K线数据
接口地址:GET /stock/kline
请求参数:
-
pid:股票ID(必填) -
interval:时间间隔(必填),支持PT1M(1分钟)、PT5M(5分钟)、PT15M(15分钟)、PT1H(1小时)、P1D(1天)、P1W(1周)、P1M(1月) -
key:API密钥(必填)
代码示例:
import pandas as pd
def get_indian_kline(pid, interval="P1D"):
url = f"{BASE_URL}/stock/kline"
params = {
"pid": pid,
"interval": interval,
"key": API_KEY
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
df = pd.DataFrame(data["data"])
df['time'] = pd.to_datetime(df['time'], unit='ms')
return df
else:
print(f"请求失败: {response.status_code}")
return None
返回示例:
{
"code": 200,
"message": "操作成功",
"data": [
{
"time": 1721832000000,
"open": 66895.35,
"high": 67038.81,
"low": 66850.15,
"close": 66876.57,
"volume": 241.28984
}
]
}
5. 获取IPO新股信息
接口地址:GET /stock/getIpo
请求参数:
-
countryId:国家ID,印度为14(必填) -
type:类型,1=即将上市,2=已上市(可选) -
key:API密钥(必填)
代码示例:
def get_indian_ipo(type=1):
url = f"{BASE_URL}/stock/getIpo"
params = {
"countryId": INDIA_COUNTRY_ID,
"type": type,
"key": API_KEY
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
return data["data"]
else:
print(f"请求失败: {response.status_code}")
return None
6. 获取涨跌排行榜
接口地址:GET /stock/updownList
请求参数:
-
countryId:国家ID,印度为14(必填) -
type:类型,1=涨幅榜,2=跌幅榜,3=涨停,4=跌停(必填) -
key:API密钥(必填)
代码示例:
def get_indian_updown_list(type=1):
url = f"{BASE_URL}/stock/updownList"
params = {
"countryId": INDIA_COUNTRY_ID,
"type": type,
"key": API_KEY
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
return data["data"]
else:
print(f"请求失败: {response.status_code}")
return None
四、WebSocket实时数据推送
StockTV还提供WebSocket实时数据推送服务,适用于高频交易和实时监控场景。
WebSocket连接地址:wss://ws-api.stocktv.top/connect
代码示例:
import websocket
import json
def on_message(ws, message):
data = json.loads(message)
print(f"收到实时数据: {data}")
def on_error(ws, error):
print(f"连接错误: {error}")
def on_close(ws, close_status_code, close_msg):
print(f"连接关闭: {close_status_code} - {close_msg}")
def on_open(ws):
print("连接已建立")
# 订阅股票行情
subscribe_data = {
"action": "subscribe",
"symbols": ["TCS", "RELIANCE"],
"exchange": "NSE"
}
ws.send(json.dumps(subscribe_data))
# 建立WebSocket连接
ws = websocket.WebSocketApp(
"wss://ws-api.stocktv.top/connect",
on_message=on_message,
on_error=on_error,
on_close=on_close,
on_open=on_open
)
ws.run_forever()
五、实战应用场景
1. 构建实时行情监控系统
通过WebSocket实时推送,构建印度股票实时行情监控系统,支持价格提醒、异常波动告警等功能。
2. 技术分析图表绘制
利用K线数据接口,绘制专业的技术分析图表,支持多种时间周期(1分钟至月线)。
3. 量化交易策略回测
获取历史K线数据,回测量化交易策略,评估策略的有效性和盈利能力。
4. IPO新股追踪
实时监控IPO新股信息,捕捉新股上市投资机会。
2462

被折叠的 条评论
为什么被折叠?



