印度股票数据API对接文档

印度股票数据API对接文档

本文档提供StockTV印度股票市场数据API的完整对接指南,包含实时行情、历史数据、公司信息等核心功能的接口说明

一、接口概览

1.1 支持交易所

交易所代码 交易所名称 覆盖股票数量
NSE 印度国家证券交易所 1800+
BSE 孟买证券交易所 5000+

1.2 数据特性

  • 实时行情:毫秒级延迟
  • 历史数据:支持最长10年历史K线
  • 基本面数据:包含PE比率、市值等指标
  • 多维度数据:指数、IPO、公司信息等
  • 数据格式:统一JSON格式

二、接入准备

2.1 获取API Key

联系官方获取密钥:https://t.me/CryptoRzz

2.2 请求基础URL

https://api.stocktv.top

2.3 请求头设置

X-Api-Key: YOUR_API_KEY
Content-Type: application/json

三、核心接口说明

3.1 市场列表接口

获取印度交易所股票列表

接口地址

GET /stock/stocks

请求参数

参数 必选 说明 示例值
countryId 国家ID(印度为14) 14
exchangeId 交易所ID(46=NSE, 74=BSE) 46
pageSize 每页数量 100
page 页码 1

响应示例

{
  "code": 200,
  "data": {
    "records": [
      {
        "id": 7310,           // 股票唯一ID
        "symbol": "RELIANCE", // 股票代码
        "name": "Reliance Industries Ltd",
        "last": 2856.75,     // 最新价
        "chgPct": 1.25,       // 涨跌幅%
        "volume": 4521890,    // 成交量
        "high": 2862.40,      // 当日最高
        "low": 2835.10,       // 当日最低
        "open": true,         // 是否开市
        "cfd": false,         // 是否为CFD
        "marketCap": 1920000000000 // 市值(卢比)
      }
    ],
    "total": 1800,
    "pages": 18
  }
}

3.2 股票详情查询

获取指定股票实时行情

接口地址

GET /stock/queryStocks

请求参数

参数 必选 说明 示例值
id 股票ID 7310

响应示例

{
  "code": 200,
  "data": [
    {
      "id": 7310,
      "symbol": "RELIANCE",
      "name": "Reliance Industries Ltd",
      "last": 2856.75,
      "prevClose": 2821.50,    // 前收盘价
      "open": 2838.25,         // 开盘价
      "high": 2862.40,
      "low": 2835.10,
      "volume": 4521890,
      "avgVolume": 3854200,    // 平均成交量
      "peRatio": 28.6,         // 市盈率
      "eps": 99.83,            // 每股收益
      "dividendYield": 0.41,   // 股息率
      "beta": 0.87,            // Beta值
      "sector": "Energy"       // 行业分类
    }
  ]
}

3.3 指数数据

获取印度主要指数行情

接口地址

GET /stock/indices

请求参数

参数 必选 说明 示例值
countryId 国家ID(印度为14) 14

响应示例

{
  "code": 200,
  "data": [
    {
      "id": 17940,
      "symbol": "NSEI",       // Nifty 50指数
      "name": "Nifty 50",
      "last": 22967.65,
      "change": 369.85,       // 涨跌额
      "changePct": 1.64,      // 涨跌幅%
      "high": 22993.6,
      "low": 22577.45,
      "prevClose": 22597.80,
      "time": 1716458537      // 更新时间戳
    },
    {
      "id": 17941,
      "symbol": "BSESN",      // SENSEX指数
      "name": "BSE SENSEX",
      "last": 75568.90,
      "change": 624.35,
      "changePct": 0.83,
      "high": 75642.20,
      "low": 74920.15,
      "prevClose": 74944.55,
      "time": 1716458537
    }
  ]
}

3.4 历史K线数据

获取股票历史价格数据

接口地址

GET /stock/kline

请求参数

参数 必选 说明 示例值
pid 股票ID 7310
interval 时间粒度 PT15M(15分钟)
P1D(日线)

响应示例

{
  "code": 200,
  "data": [
    {
      "time": 1725004800000, // 时间戳(ms)
      "open": 2838.25,
      "high": 2862.40,
      "low": 2835.10,
      "close": 2856.75,
      "volume": 4521890
    },
    {
      "time": 1725003900000,
      "open": 2835.80,
      "high": 2841.20,
      "low": 2832.50,
      "close": 2839.60,
      "volume": 3201450
    }
  ]
}

四、高级数据接口

4.1 IPO新股日历

获取即将上市的新股信息

接口地址

GET /stock/getIpo

请求参数

参数 必选 说明 示例值
countryId 国家ID 14
type 1=即将上市, 2=已上市 1

响应示例

{
  "code": 200,
  "data": [
    {
      "id": 19,
      "company": "Saraswati Saree Depot Ltd",
      "symbol": "SARW",
      "exchange": "NSE",
      "ipoPrice": "160.00",
      "listingDate": "2024-08-20", // 上市日期
      "ipoValue": "1.6B",         // 发行市值
      "last": "158.23",           // 最新价
      "pid": 1218991              // 股票ID
    }
  ]
}

4.2 涨跌排行榜

获取涨幅榜/跌幅榜数据

接口地址

GET /stock/updownList

请求参数

参数 必选 说明 示例值
countryId 国家ID 14
type 1=涨幅榜, 2=跌幅榜, 3=涨停, 4=跌停 1

响应示例

{
  "code": 200,
  "data": [
    {
      "id": 946725,
      "symbol": "IGSL",
      "name": "Inventure Growth Securities",
      "last": 2.46,
      "change": -0.62,
      "changePct": -20.13,
      "volume": 13955963
    }
  ]
}

4.3 公司基本面数据

获取公司详细信息

接口地址

GET /stock/companies

请求参数

参数 必选 说明 示例值
countryId 国家ID 14
pageSize 每页数量 10
page 页码 1

响应示例

{
  "code": 200,
  "data": {
    "records": [
      {
        "companyName": "Reliance Industries Ltd",
        "description": "综合企业集团,业务涵盖石化、零售、电信...",
        "industry": "综合企业",
        "sector": "工业",
        "employeeCount": 34681,
        "market": "India",
        "url": "/equities/reliance-industries",
        "financials": {
          "revenue": "8.3T INR",  // 营收
          "netIncome": "736B INR", // 净利润
          "assets": "15.8T INR"   // 总资产
        }
      }
    ],
    "total": 6838,
    "pages": 684
  }
}

五、实时数据推送

5.1 WebSocket连接

wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY

5.2 订阅消息

{
  "action": "subscribe",
  "pids": [7310, 41602]  // 订阅的股票ID列表
}

5.3 实时数据格式

{
  "pid": "7310",         // 股票ID
  "symbol": "RELIANCE",  // 股票代码
  "last": "2856.75",     // 最新价
  "change": "35.25",     // 涨跌额
  "changePct": "1.25",   // 涨跌幅%
  "volume": "4521890",   // 成交量
  "bid": "2856.50",      // 买一价
  "ask": "2857.00",      // 卖一价
  "high": "2862.40",     // 当日最高
  "low": "2835.10",      // 当日最低
  "open": "2838.25",     // 开盘价
  "prevClose": "2821.50",// 前收盘
  "timestamp": 1725008213 // 更新时间
}

5.4 心跳机制

客户端需每30秒发送心跳消息:

{"action": "ping"}

六、代码示例

6.1 Python获取股票数据

import requests

url = "https://api.stocktv.top/stock/stocks"
params = {
    "countryId": 14,
    "exchangeId": 46,
    "pageSize": 100,
    "page": 1
}
headers = {
    "X-Api-Key": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.get(url, params=params, headers=headers)
if response.status_code == 200:
    data = response.json()
    for stock in data["data"]["records"]:
        print(f"{stock['symbol']}: {stock['last']}")

6.2 Java实时数据订阅

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;

import java.net.URI;

public class IndiaStockWS extends WebSocketClient {

    public IndiaStockWS(URI serverUri) {
        super(serverUri);
    }

    @Override
    public void onOpen(ServerHandshake handshakedata) {
        System.out.println("Connected to India Stock API");
        // 订阅Reliance和HDFC Bank
        send("{\"action\":\"subscribe\",\"pids\":[7310, 8320]}");
    }

    @Override
    public void onMessage(String message) {
        System.out.println("Received: " + message);
        // 解析和处理实时数据
    }

    @Override
    public void onClose(int code, String reason, boolean remote) {
        System.out.println("Connection closed: " + reason);
    }

    @Override
    public void onError(Exception ex) {
        ex.printStackTrace();
    }

    public static void main(String[] args) {
        String wsUrl = "wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY";
        IndiaStockWS client = new IndiaStockWS(URI.create(wsUrl));
        client.connect();
    }
}

6.3 Node.js获取K线数据

const axios = require('axios');

async function getKlineData() {
  try {
    const response = await axios.get('https://api.stocktv.top/stock/kline', {
      params: {
        pid: 7310,
        interval: 'P1D'
      },
      headers: {
        'X-Api-Key': 'YOUR_API_KEY'
      }
    });
    
    console.log('Kline Data:', response.data.data);
  } catch (error) {
    console.error('API Error:', error.response.data);
  }
}

getKlineData();

七、最佳实践

7.1 数据缓存策略

from cachetools import TTLCache

# 创建缓存(5秒过期)
stock_cache = TTLCache(maxsize=100, ttl=5)

def get_stock_data(stock_id):
    if stock_id in stock_cache:
        return stock_cache[stock_id]
    
    # 调用API
    data = api_request(stock_id)
    stock_cache[stock_id] = data
    return data

7.2 错误处理机制

try {
    JsonNode response = stockApi.getQuote("RELIANCE");
} catch (HttpClientErrorException e) {
    switch (e.getStatusCode()) {
        case TOO_MANY_REQUESTS:
            // 429 请求过多
            Thread.sleep(1000); // 等待1秒
            break;
        case UNAUTHORIZED:
            // 401 认证失败
            refreshApiKey();
            break;
        default:
            log.error("API Error: {}", e.getMessage());
    }
}

7.3 实时数据批处理

// WebSocket数据批量处理
const batchQueue = [];
let batchTimer = null;

socket.onmessage = (event) => {
  const data = JSON.parse(event.data);
  batchQueue.push(data);
  
  if (!batchTimer) {
    batchTimer = setTimeout(() => {
      processBatch(batchQueue);
      batchQueue.length = 0;
      batchTimer = null;
    }, 100); // 每100ms处理一批
  }
};

function processBatch(batch) {
  // 批量更新UI或存储数据
}

八、数据字典

8.1 交易所ID映射

ID 交易所 说明
46 NSE 印度国家证券交易所
74 BSE 孟买证券交易所

8.2 股票字段说明

字段 说明 示例
pid 股票唯一ID 7310
symbol 股票代码 RELIANCE
last 最新价 2856.75
chgPct 涨跌幅百分比 1.25
volume 成交量 4521890
marketCap 市值(卢比) 1920000000000
peRatio 市盈率 28.6

8.3 K线时间粒度

说明
PT5M 5分钟
PT15M 15分钟
PT1H 1小时
P1D 日线
P1W 周线
P1M 月线

九、技术支持

十、附录

10.1 印度市场交易时间

交易所 交易时段(IST) 休息时间
NSE 9:15 - 15:30
BSE 9:15 - 15:30

10.2 货币单位

所有价格均以印度卢比(INR) 为单位

本文档版本:v2.1.0
最后更新:2025年9月3日
下载PDF版本:https://stocktv.top/

posted @ 2025-09-03 21:49  CryptoRzz  阅读(37)  评论(0)    收藏  举报