在对接任何接口前,您需要从 StockTV 获取 API Key,并设置基础请求函数。
<?php
// StockTV API 配置
define('STOCKTV_API_KEY', '您从StockTV获取的Key'); // 务必替换
define('STOCKTV_BASE_URL', 'https://api.stocktv.top');
/**
* 发起 HTTP GET 请求
* @param string $endpoint API路径
* @param array $params 查询参数
* @return array
*/
function stocktvApiRequest($endpoint, $params = []) {
$params['key'] = STOCKTV_API_KEY; // 必须包含 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) {
curl_close($ch);
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;
}
?>文档显示,股票相关的接口主要集中在 /stock/ 路径下。马来西亚的关键参数是 countryId=42。
这是最基础的接口,用于分页获取马来西亚交易所的股票列表,包含实时行情、基本面和技术指标。
<?php
/**
* 获取马来西亚股票市场列表
* @param int $page 页码
* @param int $pageSize 每页数量
* @param int|null $exchangeId 交易所ID (非必需)
* @return array
*/
function getMalaysiaStockList($page = 1, $pageSize = 50, $exchangeId = null) {
$endpoint = '/stock/stocks';
$params = [
'countryId' => 42, // 马来西亚
'page' => $page,
'pageSize' => $pageSize,
];
if ($exchangeId !== null) {
$params['exchangeId'] = $exchangeId; // 可用于筛选特定交易所
}
return stocktvApiRequest($endpoint, $params);
}
// 使用示例
$result = getMalaysiaStockList(1, 10);
if (isset($result['code']) && $result['code'] == 200) {
$stocks = $result['data']['records'];
echo "马来西亚股票列表 (第1页,共" . $result['data']['total'] . "只):\n";
foreach ($stocks as $stock) {
$trend = $stock['chgPct'] >= 0 ? '↑' : '↓';
echo sprintf(" %s (%s): %.3f %s%.2f%%\n",
$stock['name'],
$stock['symbol'],
$stock['last'],
$trend,
abs($stock['chgPct'])
);
}
} else {
echo "请求失败: " . ($result['message'] ?? '未知错误');
}
?>接口返回字段说明(摘录自文档):
id: 股票的唯一PID,用于后续查询(如K线)。name / symbol: 股票名称和代码。last / chg / chgPct: 最新价、涨跌额、涨跌幅。high / low: 当日最高/最低价。volume: 成交量。open: 是否开市。technicalDay / technicalHour 等: 日线/小时线技术指标信号(如 strong_buy)。可以通过股票PID、名称或代码进行精确查询。
<?php
/**
* 查询马来西亚股票
* @param int|null $pid 股票PID
* @param string|null $symbol 股票代码
* @param string|null $name 股票名称
* @return array
*/
function queryMalaysiaStock($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;
// 注意:此接口本身不包含countryId参数,结果中会包含所有匹配项,需自行筛选flag为'MY'的
$result = stocktvApiRequest($endpoint, $params);
// 筛选马来西亚股票
if (isset($result['code']) && $result['code'] == 200 && is_array($result['data'])) {
$result['data'] = array_filter($result['data'], function($stock) {
return isset($stock['flag']) && $stock['flag'] === 'MY';
});
}
return $result;
}
?>获取马来西亚的主要市场指数,如富时大马综合指数 (FTSE Bursa Malaysia KLCI)。
<?php
/**
* 获取马来西亚市场指数
* @return array
*/
function getMalaysiaIndices() {
$endpoint = '/stock/indices';
$params = [
'countryId' => 42, // 马来西亚
// 'flag' => 'MY' // 非必要参数
];
return stocktvApiRequest($endpoint, $params);
}
?>这是进行技术分析的核心接口,支持多种时间周期。
<?php
/**
* 获取马来西亚股票K线数据
* @param int $pid 股票PID
* @param string $interval K线周期: PT5M, PT15M, PT1H, PT5H, P1D, P1W, P1M
* @return array
*/
function getMalaysiaStockKline($pid, $interval = 'P1D') {
$endpoint = '/stock/kline';
$params = [
'pid' => $pid,
'interval' => $interval,
];
return stocktvApiRequest($endpoint, $params);
}
// 使用示例:获取某股票(PID=41602)的日K线
$klineData = getMalaysiaStockKline(41602, 'P1D');
if (isset($klineData['code']) && $klineData['code'] == 200) {
$klines = $klineData['data'];
echo "K线数据(日线)最新3条:\n";
$recent = array_slice($klines, -3); // 取最后3条
foreach ($recent as $bar) {
$date = date('Y-m-d', $bar['time'] / 1000);
echo "日期: {$date}, 开:{$bar['open']}, 高:{$bar['high']}, 低:{$bar['low']}, 收:{$bar['close']}, 量:{$bar['volume']}\n";
}
}
?>了解马来西亚市场的新股发行和上市计划。
<?php
/**
* 获取马来西亚IPO信息
* @param int|null $type 1=未上市, 2=已上市
* @return array
*/
function getMalaysiaIpo($type = null) {
$endpoint = '/stock/getIpo';
$params = ['countryId' => 42];
if (in_array($type, [1, 2])) {
$params['type'] = $type;
}
return stocktvApiRequest($endpoint, $params);
}
?>实时了解市场热点。
<?php
/**
* 获取马来西亚股票排行榜
* @param int $type 1涨幅榜 2跌幅榜 3涨停榜 4跌停榜
* @return array
*/
function getMalaysiaStockRank($type = 1) {
$endpoint = '/stock/updownList';
$params = [
'countryId' => 42,
'type' => $type,
];
return stocktvApiRequest($endpoint, $params);
}
?>对于实时行情推送,文档推荐使用WebSocket,这比HTTP轮询更高效。马来西亚股票的实时数据同样通过此方式获取。
关键步骤:
wss://ws-api.stocktv.top/connect?key=您的Key。pid。文档中提供了一个前端Demo,并提到有Java Demo。对于PHP,您可以使用 ratchet/pawl 等WebSocket客户端库来实现。由于实现相对复杂且依赖具体业务逻辑,此处不展开详细代码,但核心流程如上。
key 参数。getMalaysiaStockList 或 getMalaysiaStockRank。queryMalaysiaStock,或先通过列表接口找到股票的 pid。getMalaysiaStockKline。getMalaysiaIndices。getMalaysiaIpo。countryId: 马来西亚固定为 42。pid: 股票的唯一标识,用于K线、WebSocket订阅等精细操作。务必从列表或查询接口获取正确的 pid。interval: K线周期,根据分析需求选择。code 和 message 字段进行判断,并记录日志。通过以上接口,您可以全面对接马来西亚股票的实时行情、历史K线、市场指数、IPO信息等数据。请根据您的实际应用场景组合使用这些接口。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。