找回密码
 立即注册
首页 业界区 安全 印度尼西亚股票实时数据API对接文档

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

琦谓 昨天 18:05
概述

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

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


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

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

API端点

1. 印尼股票市场列表

获取印尼股票市场列表,支持分页查询。
请求示例:
  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
响应示例:
  1. {
  2.   "code": 200,
  3.   "message": "操作成功",
  4.   "data": {
  5.     "records": [
  6.       {
  7.         "id": 89234,
  8.         "name": "Bank Central Asia",
  9.         "symbol": "BBCA",
  10.         "last": 9850,
  11.         "chg": 150,
  12.         "chgPct": 1.55,
  13.         "high": 9900,
  14.         "low": 9800,
  15.         "volume": 45678200,
  16.         "avgVolume": 35214800,
  17.         "exchangeId": 61,
  18.         "countryId": 48,
  19.         "flag": "ID",
  20.         "open": true,
  21.         "lastClose": 9700,
  22.         "time": 1716458537,
  23.         "url": "/equities/bank-central-asia",
  24.         "fundamentalMarketCap": 985000000000000,
  25.         "fundamentalRevenue": "125.4T",
  26.         "performanceDay": 1.55,
  27.         "performanceWeek": 3.21,
  28.         "performanceMonth": 8.45,
  29.         "performanceYear": 22.36,
  30.         "technicalDay": "buy",
  31.         "technicalWeek": "strong_buy"
  32.       }
  33.     ],
  34.     "total": 800,
  35.     "size": 50,
  36.     "current": 1,
  37.     "pages": 16
  38.   }
  39. }
复制代码
2. 查询特定印尼股票

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

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

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

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

获取印尼股票的K线图表数据。
请求示例:
  1. 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. 印尼股票涨跌排行榜

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

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

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

通过WebSocket获取印尼股票的实时价格数据。
连接示例:
  1. 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示例
  1. import requests
  2. def get_indonesia_stocks(symbol=None):
  3.     """获取印尼股票数据"""
  4.     url = "https://api.stocktv.top/stock/stocks"
  5.     params = {
  6.         "countryId": 48,  # 修正为48
  7.         "pageSize": 50,
  8.         "page": 1,
  9.         "key": "您的API密钥"
  10.     }
  11.    
  12.     if symbol:
  13.         params["symbol"] = symbol
  14.         
  15.     response = requests.get(url, params=params)
  16.     return response.json()
  17. # 获取中亚银行股票数据
  18. bbca_data = get_indonesia_stocks("BBCA")
  19. print(bbca_data)
  20. # 获取印尼指数数据
  21. def get_indonesia_indices():
  22.     url = "https://api.stocktv.top/stock/indices"
  23.     params = {
  24.         "countryId": 48,  # 修正为48
  25.         "key": "您的API密钥"
  26.     }
  27.     response = requests.get(url, params=params)
  28.     return response.json()
  29. indices_data = get_indonesia_indices()
  30. print(indices_data)
  31. # 批量获取印尼蓝筹股
  32. def get_indonesia_blue_chips():
  33.     blue_chips = ["BBCA", "BBRI", "TLKM", "ASII", "UNVR"]
  34.     results = {}
  35.    
  36.     for symbol in blue_chips:
  37.         data = get_indonesia_stocks(symbol)
  38.         if data["code"] == 200 and data["data"]["records"]:
  39.             results[symbol] = data["data"]["records"][0]
  40.    
  41.     return results
  42. blue_chips_data = get_indonesia_blue_chips()
  43. print(blue_chips_data)
复制代码
JavaScript示例
  1. async function fetchIndonesiaStocks(symbol = null) {
  2.   let url = `https://api.stocktv.top/stock/stocks?countryId=48&pageSize=50&page=1&key=您的API密钥`;  // 修正为48
  3.   
  4.   if (symbol) {
  5.     url += `&symbol=${symbol}`;
  6.   }
  7.   
  8.   try {
  9.     const response = await fetch(url);
  10.     const data = await response.json();
  11.     return data;
  12.   } catch (error) {
  13.     console.error('获取数据失败:', error);
  14.     return null;
  15.   }
  16. }
  17. // 使用示例
  18. fetchIndonesiaStocks('BBCA').then(data => {
  19.   if (data && data.code === 200) {
  20.     console.log('中亚银行数据:', data);
  21.   }
  22. });
  23. // 获取印尼指数
  24. async function fetchIndonesiaIndices() {
  25.   try {
  26.     const response = await fetch(
  27.       `https://api.stocktv.top/stock/indices?countryId=48&key=您的API密钥`  // 修正为48
  28.     );
  29.     const data = await response.json();
  30.     return data;
  31.   } catch (error) {
  32.     console.error('获取指数数据失败:', error);
  33.     return null;
  34.   }
  35. }
  36. // 实时监控函数
  37. async function monitorIndonesiaMarket() {
  38.   const indices = await fetchIndonesiaIndices();
  39.   const jci = indices.data.find(index => index.symbol === 'JCI' || index.name.includes('Composite'));
  40.   
  41.   if (jci) {
  42.     console.log(`雅加达综合指数: ${jci.last} (${jci.chg > 0 ? '+' : ''}${jci.chgPct}%)`);
  43.   }
  44.   
  45.   // 监控主要股票
  46.   const stocks = await fetchIndonesiaStocks();
  47.   if (stocks) {
  48.     stocks.data.records.slice(0, 5).forEach(stock => {
  49.       console.log(`${stock.symbol} - ${stock.name}: ${stock.last}`);
  50.     });
  51.   }
  52. }
  53. // 每5分钟执行一次监控
  54. setInterval(monitorIndonesiaMarket, 300000);
复制代码
实时监控示例
  1. import time
  2. import requests
  3. from datetime import datetime
  4. class IndonesiaMarketMonitor:
  5.     def __init__(self, api_key):
  6.         self.api_key = api_key
  7.         self.previous_prices = {}
  8.    
  9.     def get_stock_data(self, symbol):
  10.         """获取单只股票数据"""
  11.         url = "https://api.stocktv.top/stock/queryStocks"
  12.         params = {
  13.             "countryId": 48,  # 修正为48
  14.             "symbol": symbol,
  15.             "key": self.api_key
  16.         }
  17.         
  18.         try:
  19.             response = requests.get(url, params=params, timeout=10)
  20.             return response.json()
  21.         except Exception as e:
  22.             print(f"获取{symbol}数据失败: {e}")
  23.             return None
  24.    
  25.     def monitor_stocks(self, symbols, interval=60):
  26.         """监控多只股票"""
  27.         while True:
  28.             try:
  29.                 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  30.                 print(f"\n=== 印尼股市监控 {current_time} ===")
  31.                
  32.                 for symbol in symbols:
  33.                     data = self.get_stock_data(symbol)
  34.                     if data and data["code"] == 200 and data["data"]:
  35.                         stock = data["data"][0]
  36.                         current_price = stock["last"]
  37.                         
  38.                         if symbol in self.previous_prices:
  39.                             prev_price = self.previous_prices[symbol]
  40.                             change = current_price - prev_price
  41.                             change_pct = (change / prev_price) * 100
  42.                            
  43.                             trend = "↑" if change > 0 else "↓" if change < 0 else "→"
  44.                             print(f"{symbol} {trend} {current_price:,.0f} ({change:+.0f}, {change_pct:+.2f}%)")
  45.                         else:
  46.                             print(f"{symbol} → {current_price:,.0f} (首次获取)")
  47.                         
  48.                         self.previous_prices[symbol] = current_price
  49.                
  50.                 time.sleep(interval)
  51.                
  52.             except KeyboardInterrupt:
  53.                 print("\n监控已停止")
  54.                 break
  55.             except Exception as e:
  56.                 print(f"监控出错: {e}")
  57.                 time.sleep(30)
  58. # 使用示例
  59. if __name__ == "__main__":
  60.     monitor = IndonesiaMarketMonitor("您的API密钥")
  61.     # 监控印尼主要股票
  62.     symbols = ["BBCA", "BBRI", "TLKM", "ASII", "UNVR"]
  63.     monitor.monitor_stocks(symbols, interval=300)  # 每5分钟更新
复制代码
WebSocket实时数据

通过WebSocket获取印尼股票的实时价格数据。
连接示例:
  1. const ws = new WebSocket("wss://ws-api.stocktv.top/connect?key=您的API密钥");
  2. // 连接建立时
  3. ws.onopen = function() {
  4.     console.log("已连接到印尼股市实时数据");
  5. };
  6. // 接收消息时
  7. ws.onmessage = function(event) {
  8.     const data = JSON.parse(event.data);
  9.    
  10.     // 印尼股票通常以.JK后缀标识
  11.     if (data.symbol && data.symbol.includes('.JK')) {
  12.         const symbol = data.symbol.replace('.JK', '');
  13.         console.log(`印尼股票 ${symbol} 实时价格: ${data.last_numeric}`);
  14.         
  15.         // 更新界面显示
  16.         updateStockDisplay(symbol, data.last_numeric, data.chg, data.chgPct);
  17.     }
  18. };
  19. // 错误处理
  20. ws.onerror = function(error) {
  21.     console.error("WebSocket错误:", error);
  22. };
  23. // 连接关闭时
  24. ws.onclose = function() {
  25.     console.log("连接已关闭,尝试重连...");
  26.     setTimeout(connectWebSocket, 5000);
  27. };
  28. // 更新界面显示的函数
  29. function updateStockDisplay(symbol, price, change, changePercent) {
  30.     const element = document.getElementById(`stock-${symbol}`);
  31.     if (element) {
  32.         const trend = change > 0 ? '↑' : change < 0 ? '↓' : '→';
  33.         element.innerHTML = `${symbol}: ${price} ${trend} ${change} (${changePercent}%)`;
  34.     }
  35. }
复制代码
错误处理

错误代码说明处理建议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 (北京时间)

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册