首先,您需要从 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。
以下是针对印度尼西亚市场的主要接口:
功能:获取印度尼西亚交易所的股票列表,包含实时行情、基本面和技术指标数据。
接口: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 (是否开市) 等关键字段。
功能:通过PID、名称或代码精确查询印度尼西亚股票。由于接口返回全球匹配结果,需根据 flag 或 countryId 自行筛选。
接口: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;
}
?>功能:获取指定印度尼西亚股票的历史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:日线、周线、月线功能:获取印度尼西亚市场的主要指数行情,如雅加达综合指数。
接口:GET /stock/indices
<?php
function getIndonesiaIndices() {
$endpoint = '/stock/indices';
$params = ['countryId' => 48];
return stocktvApiRequest($endpoint, $params);
}
?>功能:获取印度尼西亚市场的新股发行和上市信息。
接口: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);
}
?>功能:获取印度尼西亚市场的实时涨幅榜、跌幅榜等。
接口: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接口,这是获取低延迟数据的最佳方式。
连接地址:wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY
工作原理:
pid。返回数据示例(来自文档):
{
"pid": "992844",
"last_numeric": "0.68",
"pc": "0.000",
"pcp": "0.00",
"volume": "3672800",
"type": 1
}PHP实现建议:PHP实现WebSocket客户端通常需借助ratchet/pawl等库。由于实现较为复杂且依赖具体业务逻辑,此处不提供完整代码,但核心流程如上。文档中提供了前端和Java的Demo可供参考。
countryId 固定为 48。/stock/stocks (设countryId=48)。/stock/queryStocks,并筛选结果。/stock/kline,需先获得股票的pid。countryId=48。countryId:48。pid:股票的唯一标识,用于K线、WebSocket订阅等操作。code字段,200表示成功。通过上述接口,您可以全面对接印度尼西亚股票的实时行情、历史数据、市场指数等信息。请根据您的具体业务场景组合使用。如有关于特定接口参数或返回字段的进一步问题,可随时提出。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。