当前位置: 首页 > news >正文

获取印度股票数据API实例:NSE与BSE双市场对接指南


📈 获取印度股票数据API实例:NSE与BSE双市场对接指南

适用场景:量化交易、金融数据分析、实时监控系统开发
技术栈:Python/Java + StockTV API + 多线程/WebSocket


🔍 一、印度股票市场核心特点
  1. 双交易所体系

    • NSE(国家交易所):占全印交易量90%,核心指数Nifty 50
    • BSE(孟买交易所):亚洲最老交易所,代表指数Sensex 30
    • 交易时段09:15-15:30 IST(UTC+5:30),含午休12:00-12:15
  2. 特色数据类型

    • 期权链(Option Chain)隐含波动率
    • 外国机构持仓(FII/DII数据)
    • IPO发行文件(DRHP/Prospectus)

⚙️ 二、环境准备与依赖安装
Python环境(推荐)
# 安装依赖库
pip install requests websocket-client pandas pytz
Java环境(Maven依赖)
<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version>
</dependency>
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.10.1</version>
</dependency>

注:通过https://api.stocktv.top申请API Key(测试KEY格式:MY4b781f618e3f43c4b055f25fa61941ad


💻 三、核心接口实现(Python示例)
1. 获取印度股票列表
import requestsdef get_indian_stocks(api_key, page_size=20):url = "https://api.stocktv.top/stock/stocks"params = {"key": api_key,"countryId": 14,  # 印度国家ID固定为14"pageSize": page_size}response = requests.get(url, params=params)data = response.json()# 提取关键字段stocks = [{"symbol": item["symbol"], "name": item["name"], "last_price": item["last"]} for item in data["data"]["records"]]return stocks

输出字段:symbol(股票代码), name(公司名), last_price(最新价)

2. 查询K线数据(支持15分钟/日线等粒度)
def get_kline(api_key, pid=7310, interval="PT15M"):"""获取股票历史K线pid: 股票唯一ID(如TATA Motors为7310)interval: PT5M(5分钟)/PT1H(小时线)/P1D(日线)"""url = "https://api.stocktv.top/stock/kline"params = {"key": api_key, "pid": pid, "interval": interval}response = requests.get(url, params=params)kline_data = response.json()["data"]# 转换为DataFrame并处理时间戳df = pd.DataFrame(kline_data)df["time"] = pd.to_datetime(df["time"], unit="ms")  # 时间戳转IST时区return df[["time", "open", "high", "low", "close", "volume"]]

关键参数说明:

  • pid 通过股票列表接口获取
  • 时区陷阱:需转换到印度时区(Asia/Kolkata
3. WebSocket实时行情订阅
import websocketdef on_message(ws, message):data = json.loads(message)print(f"[{data['symbol']}] 价格: {data['last_numeric']} 涨跌幅: {data['pcp']}%")# 建立实时连接
api_key = "YOUR_API_KEY"
ws_url = f"wss://ws-api.stocktv.top/connect?key={api_key}"
ws = websocket.WebSocketApp(ws_url, on_message=on_message)
ws.run_forever()  # 需在独立线程运行

支持同时订阅多只股票(如Nifty50成分股)


🚀 四、高级功能实现
1. 获取期权链数据(Nifty指数)
def get_nifty_option_chain(api_key, expiry="2025-07-25"):params = {"key": api_key, "index": "NIFTY", "expiry": expiry}response = requests.get("https://api.stocktv.top/option/chain", params=params)chain_data = response.json()# 分析沽购比(PCR)pcr = chain_data["PCR"]print(f"Nifty期权沽购比: {pcr}")return chain_data

关键字段:strikes(行权价列表), call_iv(看涨隐含波动率), put_iv(看跌隐含波动率)

2. 监控机构持仓变化
# 获取信实工业(FII)持仓数据
fii_data = requests.get("https://api.stocktv.top/institutional/holding",params={"key": api_key, "symbol": "RELIANCE", "holder_type": "fii", "period": "q"}
).json()
last_quarter_change = fii_data["holdings"][-1]["change_pct"]

机构类型:fii(外国机构), dii(本土机构)


⚠️ 五、避坑指南与最佳实践
  1. 参数校验规范

    参数必填示例值注意事项
    exchangeNSE/BSEBSE股票需加.BO后缀
    adjust_splitstrue自动复权除息数据
  2. 高频请求优化方案

    • 连接池管理(Java示例)
      // 设置最大连接数100,单路由20连接
      PoolingHttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder.create().setMaxConnTotal(100).setMaxConnPerRoute(20).build();
      
    • 熔断机制:通过Resilience4j防御API过载(错误码429)
  3. 数据完整性校验

    # 对比交易所官方日历补缺失数据
    from pytz import timezone
    ist = timezone('Asia/Kolkata')
    df["trade_time"] = df["timestamp"].dt.tz_convert(ist)  # 统一时区
    

💎 六、完整代码示例
# 获取Nifty50成分股实时报价
nifty_stocks = get_indian_stocks(api_key, page_size=50)
nifty_symbols = [stock["symbol"] for stock in nifty_stocks if "Nifty" in stock["name"]]
quotes = [get_quote(api_key, symbol) for symbol in nifty_symbols]# 分析TOP10涨幅股
top_gainers = sorted(quotes, key=lambda x: x["chgPct"], reverse=True)[:10]
for stock in top_gainers:print(f"{stock['symbol']}: {stock['chgPct']}%")

http://www.lryc.cn/news/590273.html

相关文章:

  • Python类中魔术方法(Magic Methods)完全指南:从入门到精通
  • [特殊字符]️ Snort 与 Suricata 入侵检测系统详解
  • 热点综述│高效泛化求解新范式:神经算子综述
  • IIS网站间歇性打不开暴力解决方法
  • 问题处理——qgroundcontrol强制全屏,怎么退出。
  • 20、鸿蒙Harmony Next开发:组件导航(Navigation)和页面路由(@ohos.router)
  • kafka3.6下载安装(传统架构/KRaft模式)+实例测试
  • JavaScript 文件下载功能实现原理解析
  • C++11迭代器改进:深入理解std::begin、std::end、std::next与std::prev
  • Apache SeaTunnel详解与部署(最新版本2.3.11)
  • 从混沌到秩序:数据科学的热力学第二定律破局——线性回归的熵减模型 × 最小二乘的能量最小化 × 梯度下降的负反馈控制系统,用物理定律重构智能算法的统一场论
  • 模型上下文协议(MCP)的工作流程、安全威胁与未来发展方向
  • Qt小组件 - 5 图片懒加载样例
  • 服务攻防-Java组件安全数据处理FastJsonJackSonXStream自动BP插件CVE漏洞
  • 算法穿上隐身衣:数据交易中数据黑箱与算法透明性的法律义务边界
  • 大数据方向研究生就业前景与竞争力分析
  • “重复”定义函数的睿智(Python/与ai助手“智普清言”深度交流)
  • 综合实验(重点:ACL)
  • 【kubernetes】--安全认证机制
  • 快速掌握 Kafka:从核心概念到生产级部署指南
  • 【ROS/DDS】FastDDS:C++编写一个发布者和订阅者应用程序(三)
  • C# 8.0 创建一个简单的控制台应用程序
  • Prompt Engineering 快速入门+实战案例
  • 面向向量检索的教育QA建模:九段日本文化研究所日本语学院的Prompt策略分析(6 / 500)
  • 基于大数据电信诈骗行为分析与可视化预测系统的设计与实现【海量数据、多种机器学习对比、数据优化、过采样】
  • 多房间 WebSocket 连接管理设计:从单例模式到多终端连接池
  • 【Qt】构建和编译 Qt 程序时如何减少生成的二进制可执行文件的大小
  • Navicat操作指南:MySQL数据库配置与Todo应用部署
  • MySQL 配置性能优化赛:用创意配置解锁性能潜能
  • 《Java语言程序设计》1.2.4复习题