获取印度尼西亚股票数据API完全指南

【投稿赢 iPhone 17】「我的第一个开源项目」故事征集:用代码换C位出道! 10w+人浏览 1.7k人参与

API接口详情

1. 获取印尼市场股票列表

接口地址: GET /stock/stocks

请求参数:

GET https://api.stocktv.top/stock/stocks?countryId=10&pageSize=10&page=1&key=您的API密钥

参数说明:

  • countryId: 国家ID,印度尼西亚为10
  • pageSize: 每页显示数量,默认10
  • page: 页码,默认1
  • key: API访问密钥

响应示例:

{
  "code": 200,
  "message": "操作成功",
  "data": {
    "records": [
      {
        "id": 12345,
        "name": "Bank Central Asia Tbk",
        "symbol": "BBCA",
        "last": 8500,
        "chg": 150,
        "chgPct": 1.80,
        "high": 8550,
        "low": 8400,
        "volume": 12500000,
        "avgVolume": 9800000,
        "countryNameTranslated": "Indonesia",
        "flag": "ID",
        "open": true,
        "time": 1716448222,
        "last_close": 8350
      },
      {
        "id": 12346,
        "name": "Astra International Tbk",
        "symbol": "ASII",
        "last": 5200,
        "chg": -50,
        "chgPct": -0.95,
        "high": 5300,
        "low": 5150,
        "volume": 8500000,
        "avgVolume": 7200000,
        "countryNameTranslated": "Indonesia",
        "flag": "ID",
        "open": true,
        "time": 1716448222,
        "last_close": 5250
      }
    ],
    "total": 800,
    "size": 10,
    "current": 1,
    "pages": 80
  }
}

2. 查询特定印尼股票信息

接口地址: GET /stock/queryStocks

请求参数:

GET https://api.stocktv.top/stock/queryStocks?id=12345&key=您的API密钥

参数说明:

  • id: 股票PID(可通过市场列表接口获取)
  • name: 股票名称(可选)
  • symbol: 股票代码(可选)
  • key: API访问密钥

3. 获取印尼市场指数

接口地址: GET /stock/indices

请求参数:

GET https://api.stocktv.top/stock/indices?countryId=10&key=您的API密钥

响应示例:

{
  "code": 200,
  "message": "操作成功",
  "data": [
    {
      "id": 1001,
      "name": "IDX Composite",
      "symbol": "JKSE",
      "last": 7250.65,
      "chg": 45.85,
      "chgPct": 0.64,
      "high": 7280.60,
      "low": 7200.45,
      "isOpen": true,
      "flag": "ID",
      "time": 1716458537
    },
    {
      "id": 1002,
      "name": "LQ45 Index",
      "symbol": "LQ45",
      "last": 950.35,
      "chg": 8.25,
      "chgPct": 0.88,
      "high": 955.20,
      "low": 945.15,
      "isOpen": true,
      "flag": "ID",
      "time": 1716458537
    }
  ]
}

4. 获取K线数据

接口地址: GET /stock/kline

请求参数:

GET https://api.stocktv.top/stock/kline?pid=12345&interval=PT15M&key=您的API密钥

时间间隔参数:

  • PT5M: 5分钟
  • PT15M: 15分钟
  • PT1H: 1小时
  • P1D: 1天
  • P1W: 1周
  • P1M: 1月

5. 获取印尼市场新闻

接口地址: GET /stock/news

请求参数:

GET https://api.stocktv.top/stock/news?countryId=10&pageSize=5&page=1&key=您的API密钥

使用示例

Python获取印尼股票数据示例

import requests
import pandas as pd
from datetime import datetime

class IndonesiaStockAPI:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = "https://api.stocktv.top"
        self.country_id = 10  # 印尼国家ID
    
    def get_indonesia_stocks(self, page=1, page_size=20):
        """获取印尼股票列表"""
        url = f"{self.base_url}/stock/stocks"
        params = {
            "countryId": self.country_id,
            "page": page,
            "pageSize": page_size,
            "key": self.api_key
        }
        
        try:
            response = requests.get(url, params=params, timeout=10)
            if response.status_code == 200:
                data = response.json()
                if data["code"] == 200:
                    return data["data"]
            return None
        except Exception as e:
            print(f"获取印尼股票列表失败: {e}")
            return None
    
    def get_stock_detail(self, stock_id):
        """获取股票详细信息"""
        url = f"{self.base_url}/stock/queryStocks"
        params = {
            "id": stock_id,
            "key": self.api_key
        }
        
        try:
            response = requests.get(url, params=params, timeout=10)
            if response.status_code == 200:
                data = response.json()
                if data["code"] == 200:
                    return data["data"][0] if data["data"] else None
            return None
        except Exception as e:
            print(f"获取股票详情失败: {e}")
            return None
    
    def get_indices(self):
        """获取印尼市场指数"""
        url = f"{self.base_url}/stock/indices"
        params = {
            "countryId": self.country_id,
            "key": self.api_key
        }
        
        try:
            response = requests.get(url, params=params, timeout=10)
            if response.status_code == 200:
                data = response.json()
                if data["code"] == 200:
                    return data["data"]
            return None
        except Exception as e:
            print(f"获取指数数据失败: {e}")
            return None

# 使用示例
if __name__ == "__main__":
    API_KEY = "您的API密钥"
    
    idn_api = IndonesiaStockAPI(API_KEY)
    
    # 获取印尼股票列表
    stocks = idn_api.get_indonesia_stocks(1, 10)
    if stocks and "records" in stocks:
        print("=== 印尼股票列表 ===")
        for stock in stocks["records"]:
            print(f"{stock['symbol']} - {stock['name']}: {stock['last']} IDR")
    
    # 获取印尼市场指数
    indices = idn_api.get_indices()
    if indices:
        print("\n=== 印尼市场指数 ===")
        for index in indices:
            change_icon = "↑" if index["chg"] >= 0 else "↓"
            print(f"{index['name']}: {index['last']} {change_icon}{abs(index['chgPct'])}%")
    
    # 获取特定股票详情(例如BBCA)
    bca_stock = idn_api.get_stock_detail(12345)
    if bca_stock:
        print(f"\n=== Bank BCA详情 ===")
        print(f"当前价格: {bca_stock['last']} IDR")
        print(f"涨跌幅: {bca_stock['chg']} ({bca_stock['chgPct']}%)")
        print(f"成交量: {bca_stock['volume']}")

JavaScript获取印尼股票数据

// 使用Fetch API获取印尼股票数据
const API_KEY = '您的API密钥';
const BASE_URL = 'https://api.stocktv.top';
const COUNTRY_ID = 10; // 印尼国家ID

class IndonesiaStockData {
    // 获取印尼股票列表
    async getStocks(page = 1, pageSize = 20) {
        const url = `${BASE_URL}/stock/stocks?countryId=${COUNTRY_ID}&page=${page}&pageSize=${pageSize}&key=${API_KEY}`;
        
        try {
            const response = await fetch(url);
            const data = await response.json();
            
            if (data.code === 200) {
                return data.data;
            }
            return null;
        } catch (error) {
            console.error('获取印尼股票列表失败:', error);
            return null;
        }
    }

    // 获取印尼市场指数
    async getIndices() {
        const url = `${BASE_URL}/stock/indices?countryId=${COUNTRY_ID}&key=${API_KEY}`;
        
        try {
            const response = await fetch(url);
            const data = await response.json();
            
            if (data.code === 200) {
                return data.data;
            }
            return null;
        } catch (error) {
            console.error('获取印尼指数失败:', error);
            return null;
        }
    }

    // 更新页面显示
    updateStockDisplay(stocks) {
        const container = document.getElementById('indonesia-stocks');
        container.innerHTML = '';
        
        stocks.forEach(stock => {
            const changeClass = stock.chg >= 0 ? 'positive' : 'negative';
            const changeIcon = stock.chg >= 0 ? '↑' : '↓';
            
            const stockElement = document.createElement('div');
            stockElement.className = 'stock-item';
            stockElement.innerHTML = `
                <div class="stock-symbol">${stock.symbol}</div>
                <div class="stock-name">${stock.name}</div>
                <div class="stock-price">${stock.last.toLocaleString()}</div>
                <div class="stock-change ${changeClass}">
                    ${changeIcon} ${Math.abs(stock.chg)} (${Math.abs(stock.chgPct)}%)
                </div>
                <div class="stock-volume">成交量: ${(stock.volume / 1000000).toFixed(2)}M</div>
            `;
            container.appendChild(stockElement);
        });
    }
}

// 使用示例
const stockData = new IndonesiaStockData();

// 页面加载时获取数据
document.addEventListener('DOMContentLoaded', async () => {
    const stocks = await stockData.getStocks(1, 10);
    if (stocks && stocks.records) {
        stockData.updateStockDisplay(stocks.records);
    }
    
    const indices = await stockData.getIndices();
    if (indices) {
        console.log('印尼市场指数:', indices);
    }
});

总结

通过本文介绍的API接口,开发者可以轻松获取印尼股票市场的实时行情、历史数据和其他相关信息。这些接口设计简单易懂,支持多种编程语言调用,适合用于开发股票分析应用、投资决策工具或金融数据平台。

印尼作为东南亚最大的经济体之一,其股票市场对于区域投资者具有重要参考价值。无论是个人投资者还是金融机构,都可以利用这些API构建专业的印尼股市分析系统。


版权声明:本文涉及API接口由相应服务商提供,使用前请确保已获得合法授权。本文仅做技术交流用途,不构成任何投资建议。股市投资有风险,投资需谨慎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值