印度股票API实战教学:快速接入NSE/BSE实时行情数据

0 阅读7分钟

StockTV印度股票API实战教学:快速接入NSE/BSE实时行情数据

随着全球资产配置需求的增长,印度股市作为近年来表现最强劲的新兴市场之一,吸引了众多开发者和投资者的关注。印度国家证券交易所(NSE)和孟买证券交易所(BSE)已成为全球投资者布局南亚市场的重要平台。本文将基于StockTV API,手把手教你如何快速对接印度股票数据,构建专业的金融应用。

一、准备工作:获取API密钥与基础配置

1.1 获取API Key

所有StockTV API请求都需要有效的API密钥进行身份验证。您可以通过以下方式获取:

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亿印度投资者市场,为您的金融产品注入强大的数据动力。