使用PHP对接印度尼西亚股票市场API 实时数据、IPO和K线(Kline)的PHP对接方案

简介: 本文档详解StockTV印尼股市API对接方案:含基础配置(API Key+请求函数)、6大核心接口(股票列表/查询/K线/指数/IPO/涨跌榜,countryId=48),及WebSocket实时推送实现要点,助力快速集成印尼实时行情与历史数据。(239字)

一、基础配置

首先,您需要从 StockTV 获取 API Key,并设置基础请求函数。所有 API 请求都必须包含 key 参数。

<?php
// StockTV API 配置
define('STOCKTV_API_KEY', 'YOUR_API_KEY_HERE'); // 请替换为实际Key
define('STOCKTV_BASE_URL', 'https://api.stocktv.top');

/**
 * 通用 API 请求函数
 * @param string $endpoint API 路径
 * @param array $params 查询参数
 * @return array
 */
function stocktvApiRequest($endpoint, $params = []) {
   
    $params['key'] = STOCKTV_API_KEY; // 必需参数

    $url = STOCKTV_BASE_URL . $endpoint . '?' . http_build_query($params);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 生产环境建议启用
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    $response = curl_exec($ch);
    if ($response === false) {
   
        return ['error' => 'CURL Error: ' . curl_error($ch)];
    }
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    $decoded = json_decode($response, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
   
        return ['error' => 'JSON Decode Error'];
    }
    return $decoded;
}
?>

二、印度尼西亚股票核心接口

关键信息:根据文档描述,StockTV 支持印度尼西亚的股票行情数据。在文档的“使用说明”部分提到支持“印度、马来西亚、印度尼西亚、美国、日本、韩国...”等国家。在接口返回的示例中,明确显示了 countryId: 48 对应的国家是“Indonesia”。因此,对接印度尼西亚股票时,核心参数 countryId 应为 48

以下是针对印度尼西亚市场的主要接口:

1. 市场列表接口

功能:获取印度尼西亚交易所的股票列表,包含实时行情、基本面和技术指标数据。
接口GET /stock/stocks

<?php
function getIndonesiaStockList($page = 1, $pageSize = 50) {
   
    $endpoint = '/stock/stocks';
    $params = [
        'countryId' => 48, // 印度尼西亚
        'page' => $page,
        'pageSize' => $pageSize,
    ];
    return stocktvApiRequest($endpoint, $params);
}

// 使用示例
$result = getIndonesiaStockList(1, 5);
if (isset($result['code']) && $result['code'] == 200) {
   
    echo "印度尼西亚股票列表 (第1页):\n";
    foreach ($result['data']['records'] as $stock) {
   
        echo "  {$stock['name']} ({$stock['symbol']}): 最新价 {$stock['last']},涨跌 {$stock['chgPct']}%\n";
    }
} else {
   
    echo "请求失败: " . ($result['message'] ?? '未知错误');
}
?>

返回数据结构:与马来西亚接口类似,包含 id (PID), name, symbol, last, chgPct, volume, open (是否开市) 等关键字段。

2. 查询股票接口

功能:通过PID、名称或代码精确查询印度尼西亚股票。由于接口返回全球匹配结果,需根据 flagcountryId 自行筛选。
接口GET /stock/queryStocks

<?php
function queryIndonesiaStock($pid = null, $symbol = null, $name = null) {
   
    $endpoint = '/stock/queryStocks';
    $params = [];
    if ($pid) $params['id'] = $pid;
    if ($symbol) $params['symbol'] = $symbol;
    if ($name) $params['name'] = $name;

    $result = stocktvApiRequest($endpoint, $params);
    // 筛选印度尼西亚股票 (假设flag为'ID',或countryId为48)
    if (isset($result['code']) && $result['code'] == 200 && is_array($result['data'])) {
   
        $result['data'] = array_filter($result['data'], function($stock) {
   
            return ($stock['countryId'] ?? 0) == 48; // 或检查 $stock['flag'] == 'ID'
        });
    }
    return $result;
}
?>

3. 获取K线数据接口

功能:获取指定印度尼西亚股票的历史K线数据,用于图表和技术分析。这是分析历史走势的核心接口
接口GET /stock/kline

<?php
function getIndonesiaStockKline($pid, $interval = 'P1D') {
   
    $endpoint = '/stock/kline';
    $params = [
        'pid' => $pid,      // 从市场列表接口获取的股票PID
        'interval' => $interval,
    ];
    return stocktvApiRequest($endpoint, $params);
}

// 使用示例:获取某印尼股票的日K线
$klineData = getIndonesiaStockKline(12345, 'P1D'); // 12345为示例PID
if (isset($klineData['code']) && $klineData['code'] == 200) {
   
    $klines = $klineData['data'];
    if (!empty($klines)) {
   
        $latest = end($klines);
        $time = date('Y-m-d', $latest['time'] / 1000);
        echo "最新日K线 ({$time}): 开{$latest['open']}, 高{$latest['high']}, 低{$latest['low']}, 收{$latest['close']}, 成交量{$latest['volume']}\n";
    }
}
?>

interval 参数说明(同其他市场):

  • PT5M, PT15M, PT1H, PT5H:分钟/小时线
  • P1D, P1W, P1M:日线、周线、月线

4. 获取市场指数接口

功能:获取印度尼西亚市场的主要指数行情,如雅加达综合指数。
接口GET /stock/indices

<?php
function getIndonesiaIndices() {
   
    $endpoint = '/stock/indices';
    $params = ['countryId' => 48];
    return stocktvApiRequest($endpoint, $params);
}
?>

5. 获取IPO新股日历接口

功能:获取印度尼西亚市场的新股发行和上市信息。
接口GET /stock/getIpo

<?php
function getIndonesiaIpo($type = null) {
   
    $endpoint = '/stock/getIpo';
    $params = ['countryId' => 48];
    if (in_array($type, [1, 2])) {
   
        $params['type'] = $type; // 1=未上市, 2=已上市
    }
    return stocktvApiRequest($endpoint, $params);
}
?>

6. 获取涨跌排行榜接口

功能:获取印度尼西亚市场的实时涨幅榜、跌幅榜等。
接口GET /stock/updownList

<?php
function getIndonesiaStockRank($type = 1) {
   
    $endpoint = '/stock/updownList';
    $params = [
        'countryId' => 48,
        'type' => $type, // 1涨幅榜 2跌幅榜 3涨停榜 4跌停榜
    ];
    return stocktvApiRequest($endpoint, $params);
}
?>

三、实时数据推送 (WebSocket)

对于实时行情,文档推荐使用WebSocket接口,这是获取低延迟数据的最佳方式。

连接地址wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY

工作原理

  1. 使用上述地址建立WebSocket长连接。
  2. 连接成功后,发送订阅消息(具体JSON格式需参考客服提供的详细协议),指定要订阅的印度尼西亚股票的pid
  3. 服务器将持续推送订阅股票的实时行情。
  4. 需定期发送心跳消息以保持连接。

返回数据示例(来自文档):

{
   
  "pid": "992844",
  "last_numeric": "0.68",
  "pc": "0.000",
  "pcp": "0.00",
  "volume": "3672800",
  "type": 1
}

PHP实现建议:PHP实现WebSocket客户端通常需借助ratchet/pawl等库。由于实现较为复杂且依赖具体业务逻辑,此处不提供完整代码,但核心流程如上。文档中提供了前端和Java的Demo可供参考。

四、完整对接流程与注意事项

  1. 获取API Key:这是所有请求的前提。
  2. 确定国家ID:对接印度尼西亚,countryId 固定为 48
  3. 数据需求与接口匹配
    • 获取股票列表/监控:使用/stock/stocks (设countryId=48)。
    • 查询单只股票:使用/stock/queryStocks,并筛选结果。
    • 获取历史K线:使用/stock/kline,需先获得股票的pid
    • 获取实时推送必须使用WebSocket
    • 获取市场指数/IPO/排行榜:使用相应接口,并设countryId=48
  4. 核心参数
    • countryId48
    • pid:股票的唯一标识,用于K线、WebSocket订阅等操作。
  5. 错误处理:务必检查API返回的code字段,200表示成功。
  6. 性能建议:避免高频HTTP轮询。对多只股票进行实时监控时,应使用WebSocket接口。

通过上述接口,您可以全面对接印度尼西亚股票的实时行情、历史数据、市场指数等信息。请根据您的具体业务场景组合使用。如有关于特定接口参数或返回字段的进一步问题,可随时提出。

相关文章
|
25天前
|
JSON API PHP
使用PHP对接美股股票市场API 实时数据、IPO和K线(Kline)的PHP对接方案
StockTV API 面向开发者,提供美股实时行情、历史K线(5分钟至1月)、IPO日历等数据,支持HTTP/WS双接入,全接口返回标准JSON,含纽交所(ex=1)与纳斯达克(ex=2)标识。(239字)
|
1月前
|
缓存 JSON API
玩转纳斯达克与纽交所:美股数据 API 对接全指南
本文手把手教你用StockTV API对接美股(NYSE/NASDAQ)实时行情、专业K线及IPO数据,支持WebSocket极速推送、多维技术指标与全交易所覆盖,助你快速构建低延迟量化交易或金融App。(239字)
|
24天前
|
数据采集 算法 数据挖掘
通义实验室Fun-CineForge开源:首个支持影视级多场景配音的多模态大模型
通义实验室开源Fun-CineForge——首个支持多说话人、强时间对齐的多模态电影配音大模型。首创引入时间模态,结合视觉、文本、音频与时间信息,实现高精度唇形同步、音色克隆与情感表达,并开源高质量中文影视配音数据集CineDub-CN及端到端构建流程。(239字)
365 7
|
1月前
|
人工智能 数据安全/隐私保护
五分钟配好向日葵 MCP,让 AI 替你远程安装 OpenClaw!
本文详解向日葵MCP的实战配置与应用:将远程控制能力接入AI,实现“一句话操作另一台电脑”。支持截图查看桌面、自动打开浏览器搜索、远程执行命令等,无需写脚本,配置简单,即刻上手。
630 12
五分钟配好向日葵 MCP,让 AI 替你远程安装 OpenClaw!
|
11天前
|
人工智能 JSON 编解码
【SpringAIAlibaba新手村系列】(15)MCP Client 调用本地服务
本章从 MCP Client 视角说明如何连接上一章提供的本地服务,并把远端工具接入 ChatClient。重点讲解 Streamable-HTTP 配置、ToolCallbackProvider 的注入方式,以及模型如何通过 JSON-RPC 消息完成工具调用与结果回传。
188 21
|
8天前
|
数据采集 自动驾驶 算法
道路设施目标检测数据集(约5000张已标注)|YOLO训练与智能交通应用数据集
本数据集含约5000张真实道路图像,精准标注交通标志、热塑标线、金属护栏、减速带4类设施,采用YOLO标准格式(归一化bbox),已划分train/val/test集。覆盖多场景、多光照、多尺度,支持YOLOv5/v8等直接训练,适用于智能巡检、自动驾驶感知与交通管理。
211 11
道路设施目标检测数据集(约5000张已标注)|YOLO训练与智能交通应用数据集

热门文章

最新文章

下一篇
开通oss服务