找回密码
 立即注册
首页 业界区 安全 对接印度尼西亚金融市场数据

对接印度尼西亚金融市场数据

游瞠离 2025-6-1 19:01:00
一、印尼金融市场概述

印度尼西亚作为东南亚最大的经济体,其金融市场具有独特优势:

  • 雅加达综合指数(IDX Composite) 包含所有IDX上市公司
  • LQ45指数 代表45家高流动性上市公司
  • 特色板块 包括棕榈油、煤炭、镍矿等资源类企业
  • 交易活跃 日均交易量超10万亿印尼盾
二、API快速入门指南

1. 获取API密钥
  1. # 联系客服获取API Key
  2. API_KEY = "your_api_key_here"  # 替换为实际获取的密钥
  3. BASE_URL = "https://api.stocktv.top"
复制代码
2. 基础请求示例
  1. import requests
  2. def get_indonesia_stocks():
  3.     url = f"{BASE_URL}/stock/stocks"
  4.     params = {
  5.         "countryId": 48,  # 印尼国家代码
  6.         "key": API_KEY
  7.     }
  8.     response = requests.get(url, params=params)
  9.     return response.json()
  10. # 获取前10只印尼股票
  11. stocks = get_indonesia_stocks()
  12. print(stocks)
复制代码
三、核心接口详解

1. 股票数据接口

获取个股实时行情
  1. GET /stock/queryStocks?symbol=BBCA&key=您的API_KEY
复制代码
响应示例:
  1. {
  2.   "id": 50321,
  3.   "symbol": "BBCA",
  4.   "name": "Bank Central Asia",
  5.   "last": 8950,
  6.   "change": 50,
  7.   "changePercent": 0.56,
  8.   "volume": 125487500,
  9.   "lastUpdate": "2024-08-09T14:30:00+07:00"
  10. }
复制代码
获取分时K线数据
  1. def get_kline(stock_id, interval="PT15M"):
  2.     url = f"{BASE_URL}/stock/kline"
  3.     params = {
  4.         "pid": stock_id,
  5.         "interval": interval,
  6.         "key": API_KEY
  7.     }
  8.     return requests.get(url, params=params).json()
  9. # 获取BBCA银行15分钟K线
  10. kline_data = get_kline(50321)
复制代码
2. 指数数据接口

主要指数列表:
指数代码指数名称接口IDJKSEIDX Composite18521JKLQ45LQ45 Index18522JIIJakarta Islamic Index18523获取方法:
  1. GET /stock/indicesById?id=18521&key=您的API_KEY
复制代码
3. 印尼卢比汇率接口

获取IDR交叉汇率:
  1. def get_idr_rates():
  2.     url = f"{BASE_URL}/market/currency"
  3.     params = {
  4.         "countryType": "id",
  5.         "key": API_KEY
  6.     }
  7.     return requests.get(url, params=params).json()
  8. # 获取USD/IDR, CNY/IDR等汇率
  9. exchange_rates = get_idr_rates()
复制代码
四、WebSocket实时数据接入

1. 建立连接
  1. const ws = new WebSocket(`wss://ws-api.stocktv.top/connect?key=${API_KEY}`);
  2. ws.onopen = () => {
  3.     console.log("连接已建立");
  4.     // 订阅BBCA股票和JKSE指数
  5.     ws.send(JSON.stringify({
  6.         action: "subscribe",
  7.         pids: [50321, 18521]
  8.     }));
  9. };
复制代码
2. 实时数据格式
  1. {
  2.   "type": "stock",
  3.   "pid": 50321,
  4.   "symbol": "BBCA",
  5.   "last": 8960,
  6.   "bid": 8955,
  7.   "ask": 8960,
  8.   "volume": 125490200,
  9.   "timestamp": 1725002394
  10. }
复制代码
五、实战案例:构建印尼股票监控系统

系统架构

graph TD    A[数据获取层] -->|HTTP API| B[原始数据]    A -->|WebSocket| C[实时数据]    B --> D[数据处理]    C --> D    D --> E[MySQL存储]    E --> F[数据分析]    F --> G[前端展示]核心代码实现
  1. # 数据存储模型
  2. class IndonesiaStock(models.Model):
  3.     symbol = models.CharField(max_length=10)
  4.     name = models.CharField(max_length=100)
  5.     last_price = models.DecimalField(max_digits=12, decimal_places=2)
  6.     volume = models.BigIntegerField()
  7.     update_time = models.DateTimeField(auto_now=True)
  8. # 定时任务配置
  9. @app.task
  10. def update_stock_data():
  11.     data = get_indonesia_stocks()
  12.     for stock in data['records']:
  13.         IndonesiaStock.objects.update_or_create(
  14.             symbol=stock['symbol'],
  15.             defaults={
  16.                 'last_price': stock['last'],
  17.                 'volume': stock['volume']
  18.             }
  19.         )
复制代码
六、常见问题解答

Q1:如何获取历史数据?
  1. GET /stock/kline?pid=50321&interval=P1D&startTime=1672502400&endTime=1675180800&key=您的API_KEY
复制代码
Q2:印尼市场的交易时间?

  • 上午盘:09:30-12:00 (UTC+7)
  • 下午盘:13:30-16:00 (UTC+7)
  • API返回字段open标识是否在交易时段
Q3:如何处理印尼卢比面值?
  1. # 印尼股票价格通常以印尼盾为单位
  2. price = 8950  # 表示8,950印尼盾
  3. formatted_price = f"Rp {price:,}"  # 格式化为 Rp 8,950
复制代码
七、资源推荐


  • 完整接口文档
  • GitHub示例代码
  • 印尼金融市场日历
提示:在实际应用中,建议配合缓存机制(如Redis)来优化API调用频率,并设置合理的错误重试机制处理网络波动。

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