琦谓 发表于 4 天前

印度尼西亚股票实时数据API对接文档

概述

本文档详细说明如何对接StockTV全球股票API中的印度尼西亚股票数据。印尼股票市场是东南亚重要的金融市场之一,以雅加达综合指数为代表。
认证方式

所有API请求都需要在URL参数中包含API Key:
key=您的API密钥基础信息


[*]印度尼西亚国家ID: countryId=48
[*]主要交易所ID:

[*]印尼证券交易所(IDX): exchangeId=61
[*]雅加达证券交易所: exchangeId=61 (同IDX)

API端点

1. 印尼股票市场列表

获取印尼股票市场列表,支持分页查询。
请求示例:
GET https://api.stocktv.top/stock/stocks?countryId=48&pageSize=50&page=1&key=您的API密钥参数说明:

[*]countryId: 必须为48(印度尼西亚)
[*]pageSize: 每页返回数量(默认10,最大100)
[*]page: 页码(默认1)
[*]exchangeId: 可选,交易所ID
响应示例:
{
"code": 200,
"message": "操作成功",
"data": {
    "records": [
      {
      "id": 89234,
      "name": "Bank Central Asia",
      "symbol": "BBCA",
      "last": 9850,
      "chg": 150,
      "chgPct": 1.55,
      "high": 9900,
      "low": 9800,
      "volume": 45678200,
      "avgVolume": 35214800,
      "exchangeId": 61,
      "countryId": 48,
      "flag": "ID",
      "open": true,
      "lastClose": 9700,
      "time": 1716458537,
      "url": "/equities/bank-central-asia",
      "fundamentalMarketCap": 985000000000000,
      "fundamentalRevenue": "125.4T",
      "performanceDay": 1.55,
      "performanceWeek": 3.21,
      "performanceMonth": 8.45,
      "performanceYear": 22.36,
      "technicalDay": "buy",
      "technicalWeek": "strong_buy"
      }
    ],
    "total": 800,
    "size": 50,
    "current": 1,
    "pages": 16
}
}2. 查询特定印尼股票

通过股票ID、名称或代码查询印尼股票信息。
请求示例:
GET https://api.stocktv.top/stock/queryStocks?countryId=48&symbol=BBCA&key=您的API密钥参数说明:

[*]id: 股票PID(可选)
[*]name: 股票名称(可选)
[*]symbol: 股票代码(可选)
[*]url: 股票详情页URL(可选)
3. 印尼指数数据

获取印尼主要股票指数信息。
请求示例:
GET https://api.stocktv.top/stock/indices?countryId=48&key=您的API密钥响应包含:

[*]雅加达综合指数(JCI/IDX Composite)
[*]LQ45指数
[*]Jakarta Islamic Index等
4. 印尼股票K线数据

获取印尼股票的K线图表数据。
请求示例:
GET https://api.stocktv.top/stock/kline?pid=89234&interval=PT1H&key=您的API密钥时间间隔参数:

[*]PT5M: 5分钟
[*]PT15M: 15分钟
[*]PT1H: 1小时
[*]PT5H: 5小时
[*]P1D: 1天
[*]P1W: 1周
[*]P1M: 1月
5. 印尼股票涨跌排行榜

获取印尼股票的涨跌幅排行榜。
请求示例:
GET https://api.stocktv.top/stock/updownList?countryId=48&type=1&key=您的API密钥类型参数:

[*]1: 涨幅榜
[*]2: 跌幅榜
[*]3: 涨停榜
[*]4: 跌停榜
6. 印尼上市公司信息

获取印尼上市公司的详细信息。
请求示例:
GET https://api.stocktv.top/stock/companies?countryId=48&pageSize=10&page=1&key=您的API密钥7. WebSocket实时数据

通过WebSocket获取印尼股票的实时价格数据。
连接示例:
const ws = new WebSocket("wss://ws-api.stocktv.top/connect?key=您的API密钥");数据说明

交易时间


[*]印尼股市交易时间(西部印尼时间WIB):

[*]早盘: 9:00-12:00
[*]午盘: 13:30-16:00

[*]API中的open字段表示当前是否处于交易时间
价格货币


[*]所有印尼股票价格均以印尼盾(IDR)为单位
特殊处理


[*]印尼股票代码通常为4位字母
[*]印尼市场有独特的行业分类体系
印尼主要指数

指数代码指数名称说明JCI雅加达综合指数印尼主要股票指数,包含所有上市公司LQ45LQ45指数45只最具流动性的股票JII雅加达伊斯兰指数符合伊斯兰教法的股票指数印尼知名上市公司

公司名称股票代码行业中文名称Bank Central AsiaBBCA银行中亚银行Bank Rakyat IndonesiaBBRI银行印尼人民银行Telkom IndonesiaTLKM电信印尼电信Astra InternationalASII汽车阿斯特拉国际Unilever IndonesiaUNVR消费品联合利华印尼示例代码

Python示例

import requests

def get_indonesia_stocks(symbol=None):
    """获取印尼股票数据"""
    url = "https://api.stocktv.top/stock/stocks"
    params = {
      "countryId": 48,# 修正为48
      "pageSize": 50,
      "page": 1,
      "key": "您的API密钥"
    }
   
    if symbol:
      params["symbol"] = symbol
      
    response = requests.get(url, params=params)
    return response.json()

# 获取中亚银行股票数据
bbca_data = get_indonesia_stocks("BBCA")
print(bbca_data)

# 获取印尼指数数据
def get_indonesia_indices():
    url = "https://api.stocktv.top/stock/indices"
    params = {
      "countryId": 48,# 修正为48
      "key": "您的API密钥"
    }
    response = requests.get(url, params=params)
    return response.json()

indices_data = get_indonesia_indices()
print(indices_data)

# 批量获取印尼蓝筹股
def get_indonesia_blue_chips():
    blue_chips = ["BBCA", "BBRI", "TLKM", "ASII", "UNVR"]
    results = {}
   
    for symbol in blue_chips:
      data = get_indonesia_stocks(symbol)
      if data["code"] == 200 and data["data"]["records"]:
            results = data["data"]["records"]
   
    return results

blue_chips_data = get_indonesia_blue_chips()
print(blue_chips_data)JavaScript示例

async function fetchIndonesiaStocks(symbol = null) {
let url = `https://api.stocktv.top/stock/stocks?countryId=48&pageSize=50&page=1&key=您的API密钥`;// 修正为48

if (symbol) {
    url += `&symbol=${symbol}`;
}

try {
    const response = await fetch(url);
    const data = await response.json();
    return data;
} catch (error) {
    console.error('获取数据失败:', error);
    return null;
}
}

// 使用示例
fetchIndonesiaStocks('BBCA').then(data => {
if (data && data.code === 200) {
    console.log('中亚银行数据:', data);
}
});

// 获取印尼指数
async function fetchIndonesiaIndices() {
try {
    const response = await fetch(
      `https://api.stocktv.top/stock/indices?countryId=48&key=您的API密钥`// 修正为48
    );
    const data = await response.json();
    return data;
} catch (error) {
    console.error('获取指数数据失败:', error);
    return null;
}
}

// 实时监控函数
async function monitorIndonesiaMarket() {
const indices = await fetchIndonesiaIndices();
const jci = indices.data.find(index => index.symbol === 'JCI' || index.name.includes('Composite'));

if (jci) {
    console.log(`雅加达综合指数: ${jci.last} (${jci.chg > 0 ? '+' : ''}${jci.chgPct}%)`);
}

// 监控主要股票
const stocks = await fetchIndonesiaStocks();
if (stocks) {
    stocks.data.records.slice(0, 5).forEach(stock => {
      console.log(`${stock.symbol} - ${stock.name}: ${stock.last}`);
    });
}
}

// 每5分钟执行一次监控
setInterval(monitorIndonesiaMarket, 300000);实时监控示例

import time
import requests
from datetime import datetime

class IndonesiaMarketMonitor:
    def __init__(self, api_key):
      self.api_key = api_key
      self.previous_prices = {}
   
    def get_stock_data(self, symbol):
      """获取单只股票数据"""
      url = "https://api.stocktv.top/stock/queryStocks"
      params = {
            "countryId": 48,# 修正为48
            "symbol": symbol,
            "key": self.api_key
      }
      
      try:
            response = requests.get(url, params=params, timeout=10)
            return response.json()
      except Exception as e:
            print(f"获取{symbol}数据失败: {e}")
            return None
   
    def monitor_stocks(self, symbols, interval=60):
      """监控多只股票"""
      while True:
            try:
                current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                print(f"\n=== 印尼股市监控 {current_time} ===")
               
                for symbol in symbols:
                  data = self.get_stock_data(symbol)
                  if data and data["code"] == 200 and data["data"]:
                        stock = data["data"]
                        current_price = stock["last"]
                        
                        if symbol in self.previous_prices:
                            prev_price = self.previous_prices
                            change = current_price - prev_price
                            change_pct = (change / prev_price) * 100
                           
                            trend = "↑" if change > 0 else "↓" if change < 0 else "→"
                            print(f"{symbol} {trend} {current_price:,.0f} ({change:+.0f}, {change_pct:+.2f}%)")
                        else:
                            print(f"{symbol} → {current_price:,.0f} (首次获取)")
                        
                        self.previous_prices = current_price
               
                time.sleep(interval)
               
            except KeyboardInterrupt:
                print("\n监控已停止")
                break
            except Exception as e:
                print(f"监控出错: {e}")
                time.sleep(30)

# 使用示例
if __name__ == "__main__":
    monitor = IndonesiaMarketMonitor("您的API密钥")
    # 监控印尼主要股票
    symbols = ["BBCA", "BBRI", "TLKM", "ASII", "UNVR"]
    monitor.monitor_stocks(symbols, interval=300)# 每5分钟更新WebSocket实时数据

通过WebSocket获取印尼股票的实时价格数据。
连接示例:
const ws = new WebSocket("wss://ws-api.stocktv.top/connect?key=您的API密钥");

// 连接建立时
ws.onopen = function() {
    console.log("已连接到印尼股市实时数据");
};

// 接收消息时
ws.onmessage = function(event) {
    const data = JSON.parse(event.data);
   
    // 印尼股票通常以.JK后缀标识
    if (data.symbol && data.symbol.includes('.JK')) {
      const symbol = data.symbol.replace('.JK', '');
      console.log(`印尼股票 ${symbol} 实时价格: ${data.last_numeric}`);
      
      // 更新界面显示
      updateStockDisplay(symbol, data.last_numeric, data.chg, data.chgPct);
    }
};

// 错误处理
ws.onerror = function(error) {
    console.error("WebSocket错误:", error);
};

// 连接关闭时
ws.onclose = function() {
    console.log("连接已关闭,尝试重连...");
    setTimeout(connectWebSocket, 5000);
};

// 更新界面显示的函数
function updateStockDisplay(symbol, price, change, changePercent) {
    const element = document.getElementById(`stock-${symbol}`);
    if (element) {
      const trend = change > 0 ? '↑' : change < 0 ? '↓' : '→';
      element.innerHTML = `${symbol}: ${price} ${trend} ${change} (${changePercent}%)`;
    }
}错误处理

错误代码说明处理建议400参数错误检查countryId参数是否正确设置为48401认证失败检查API Key是否有效404资源不存在检查股票代码或ID是否正确500服务器错误稍后重试或联系技术支持503服务不可用印尼市场可能处于非交易时间印尼股市特点


[*]交易货币: 印尼盾(IDR)
[*]交易时间: 周一至周五,上午9:00-12:00,下午13:30-16:00
[*]涨跌幅限制: ±20%(主板),±35%(发展板)
[*]行业分布: 金融、消费、资源、电信是主要板块
[*]外资限制: 部分行业有外资持股限制
注意事项


[*]时区差异: 印尼有三个时区,股市交易以西印尼时间(WIB)为准
[*]货币单位: 印尼盾面值较大,注意数值处理
[*]伊斯兰历法: 印尼伊斯兰节日可能影响交易日安排
技术支持

如有疑问或需要帮助,请通过以下方式联系:

[*]Telegram: https://t.me/CryptoRzz
[*]邮箱: stocktv.top@outlook.com
[*]技术支持时间: 周一至周五 9:00-18:00 (北京时间)

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 印度尼西亚股票实时数据API对接文档