一、印尼金融市场概述
印度尼西亚作为东南亚最大的经济体,其金融市场具有独特优势:
- 雅加达综合指数(IDX Composite) 包含所有IDX上市公司
- LQ45指数 代表45家高流动性上市公司
- 特色板块 包括棕榈油、煤炭、镍矿等资源类企业
- 交易活跃 日均交易量超10万亿印尼盾
二、API快速入门指南
1. 获取API密钥
- # 联系客服获取API Key
- API_KEY = "your_api_key_here" # 替换为实际获取的密钥
- BASE_URL = "https://api.stocktv.top"
复制代码 2. 基础请求示例
- import requests
- def get_indonesia_stocks():
- url = f"{BASE_URL}/stock/stocks"
- params = {
- "countryId": 48, # 印尼国家代码
- "key": API_KEY
- }
- response = requests.get(url, params=params)
- return response.json()
- # 获取前10只印尼股票
- stocks = get_indonesia_stocks()
- print(stocks)
复制代码 三、核心接口详解
1. 股票数据接口
获取个股实时行情
- GET /stock/queryStocks?symbol=BBCA&key=您的API_KEY
复制代码 响应示例:- {
- "id": 50321,
- "symbol": "BBCA",
- "name": "Bank Central Asia",
- "last": 8950,
- "change": 50,
- "changePercent": 0.56,
- "volume": 125487500,
- "lastUpdate": "2024-08-09T14:30:00+07:00"
- }
复制代码 获取分时K线数据
- def get_kline(stock_id, interval="PT15M"):
- url = f"{BASE_URL}/stock/kline"
- params = {
- "pid": stock_id,
- "interval": interval,
- "key": API_KEY
- }
- return requests.get(url, params=params).json()
- # 获取BBCA银行15分钟K线
- kline_data = get_kline(50321)
复制代码 2. 指数数据接口
主要指数列表:
指数代码指数名称接口IDJKSEIDX Composite18521JKLQ45LQ45 Index18522JIIJakarta Islamic Index18523获取方法:- GET /stock/indicesById?id=18521&key=您的API_KEY
复制代码 3. 印尼卢比汇率接口
获取IDR交叉汇率:- def get_idr_rates():
- url = f"{BASE_URL}/market/currency"
- params = {
- "countryType": "id",
- "key": API_KEY
- }
- return requests.get(url, params=params).json()
- # 获取USD/IDR, CNY/IDR等汇率
- exchange_rates = get_idr_rates()
复制代码 四、WebSocket实时数据接入
1. 建立连接
- const ws = new WebSocket(`wss://ws-api.stocktv.top/connect?key=${API_KEY}`);
- ws.onopen = () => {
- console.log("连接已建立");
- // 订阅BBCA股票和JKSE指数
- ws.send(JSON.stringify({
- action: "subscribe",
- pids: [50321, 18521]
- }));
- };
复制代码 2. 实时数据格式
- {
- "type": "stock",
- "pid": 50321,
- "symbol": "BBCA",
- "last": 8960,
- "bid": 8955,
- "ask": 8960,
- "volume": 125490200,
- "timestamp": 1725002394
- }
复制代码 五、实战案例:构建印尼股票监控系统
系统架构
graph TD A[数据获取层] -->|HTTP API| B[原始数据] A -->|WebSocket| C[实时数据] B --> D[数据处理] C --> D D --> E[MySQL存储] E --> F[数据分析] F --> G[前端展示]核心代码实现
- # 数据存储模型
- class IndonesiaStock(models.Model):
- symbol = models.CharField(max_length=10)
- name = models.CharField(max_length=100)
- last_price = models.DecimalField(max_digits=12, decimal_places=2)
- volume = models.BigIntegerField()
- update_time = models.DateTimeField(auto_now=True)
- # 定时任务配置
- @app.task
- def update_stock_data():
- data = get_indonesia_stocks()
- for stock in data['records']:
- IndonesiaStock.objects.update_or_create(
- symbol=stock['symbol'],
- defaults={
- 'last_price': stock['last'],
- 'volume': stock['volume']
- }
- )
复制代码 六、常见问题解答
Q1:如何获取历史数据?- 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:如何处理印尼卢比面值?- # 印尼股票价格通常以印尼盾为单位
- price = 8950 # 表示8,950印尼盾
- formatted_price = f"Rp {price:,}" # 格式化为 Rp 8,950
复制代码 七、资源推荐
- 完整接口文档
- GitHub示例代码
- 印尼金融市场日历
提示:在实际应用中,建议配合缓存机制(如Redis)来优化API调用频率,并设置合理的错误重试机制处理网络波动。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |