是否存在可返回JSON格式技术指标(RSI、MACD等)的NSE API接口?
获取NSE股票RSI、MACD等技术指标的解决方案
1. 现有接口限制说明
你当前使用的https://www.nseindia.com/api/quote-equity?symbol=ABB接口仅返回股票实时报价、基本财务信息等基础数据,不包含RSI、MACD这类技术分析指标。要获取这些指标,可参考以下两种可行方案:
2. 方案一:获取历史K线数据后自行计算
步骤1:获取历史OHLC数据
NSE提供了股票历史日线数据接口,请求格式如下:
https://www.nseindia.com/api/historical/cm/equity?symbol=ABB&series=[%22EQ%22]&from=01-01-2024&to=31-01-2024
核心参数说明:
symbol:目标股票代码(如ABB)series:交易系列,默认填EQ即可from/to:查询日期范围,格式为DD-MM-YYYY
步骤2:基于OHLC数据计算技术指标
拿到历史收盘价、最高价、最低价后,可自行实现RSI、MACD的计算逻辑,也可借助成熟工具库简化开发:
- RSI(14周期为例):
- 计算每日收盘价变动值(当日收盘价-前一日收盘价)
- 分离上涨变动和下跌变动(下跌取绝对值)
- 计算14周期内的平均上涨值(Avg Gain)与平均下跌值(Avg Loss)
- 计算相对强度RS = Avg Gain / Avg Loss
- RSI = 100 - (100 / (1 + RS))
- MACD:
- 计算12周期EMA(指数移动平均线)和26周期EMA
- DIF = 12周期EMA - 26周期EMA
- DEA = DIF的9周期EMA
- MACD柱 = (DIF - DEA) * 2
Python示例代码(使用talib库快速计算):
import pandas as pd import talib # 假设已将历史数据存入DataFrame,包含'Close'列 df = pd.read_csv('abb_historical_data.csv') # 计算14周期RSI df['RSI'] = talib.RSI(df['Close'], timeperiod=14) # 计算MACD(默认12/26/9周期) df['MACD'], df['MACD_Signal'], df['MACD_Hist'] = talib.MACD(df['Close'])
3. 方案二:使用NSE技术指标专用接口
NSE股票技术分析页面会加载预计算的技术指标,对应的接口可通过页面抓包获取,请求格式大致如下:
https://www.nseindia.com/api/chart-databyindex?index=ABB EQN
参数说明:index格式为{股票代码} EQN(如ABB对应ABB EQN),返回的JSON数据中直接包含RSI、MACD等指标的计算结果,可直接提取使用。
注意:这类接口需要模拟浏览器请求头(如User-Agent、Referer)才能正常访问,且接口规则可能随NSE网站更新而变化。
额外注意事项
- NSE接口可能不定期调整,使用前需验证可用性
- 频繁请求可能触发反爬机制,建议控制请求频率
- 自行计算指标时,需确保历史数据的完整性与时间顺序正确
内容的提问来源于stack exchange,提问作者Mihir Chichria
相关产品推荐
相关产品推荐

