印度尼西亞股票實時數據API對接文檔
概述
本文檔詳細說明如何對接StockTV全球股票API中的印度尼西亞股票數據。印尼股票市場是東南亞重要的金融市場之一,以雅加達綜合指數為代表。
認證方式
所有API請求都需要在URL參數中包含API Key:
key=您的API密鑰
基礎信息
- 印度尼西亞國家ID:
countryId=48 - 主要交易所ID:
- 印尼證券交易所(IDX):
exchangeId=61 - 雅加達證券交易所:
exchangeId=61(同IDX)
- 印尼證券交易所(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 | 雅加達綜合指數 | 印尼主要股票指數,包含所有上市公司 |
| LQ45 | LQ45指數 | 45只最具流動性的股票 |
| JII | 雅加達伊斯蘭指數 | 符合伊斯蘭教法的股票指數 |
印尼知名上市公司
| 公司名稱 | 股票代碼 | 行業 | 中文名稱 |
|---|---|---|---|
| Bank Central Asia | BBCA | 銀行 | 中亞銀行 |
| Bank Rakyat Indonesia | BBRI | 銀行 | 印尼人民銀行 |
| Telkom Indonesia | TLKM | 電信 | 印尼電信 |
| Astra International | ASII | 汽車 | 阿斯特拉國際 |
| Unilever Indonesia | UNVR | 消費品 | 聯合利華印尼 |
示例代碼
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[symbol] = data["data"]["records"][0]
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"][0]
current_price = stock["last"]
if symbol in self.previous_prices:
prev_price = self.previous_prices[symbol]
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[symbol] = 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} <span class="${change > 0 ? 'positive' : change < 0 ? 'negative' : 'neutral'}">${trend} ${change} (${changePercent}%)</span>`;
}
}
錯誤處理
| 錯誤代碼 | 說明 | 處理建議 |
|---|---|---|
| 400 | 參數錯誤 | 檢查countryId參數是否正確設置為48 |
| 401 | 認證失敗 | 檢查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 (北京時間)

浙公網安備 33010602011771號