用PHP对接马来西亚股票数据API开发指南

用PHP对接马来西亚股票数据API开发指南

本文介绍如何使用PHP对接StockTV提供的全球股票数据API,重点演示获取马来西亚股票市场数据的实现方法。

一、准备工作

  1. 申请API密钥
    联系paopao--Key

  2. 接口基础信息

$base_url = "https://api.stocktv.top";
$api_key = "YOUR_API_KEY"; // 替换为实际Key

二、核心接口实现

  1. 获取马来西亚股票列表
function getMalaysiaStocks($page = 1, $pageSize = 10) {
    global $base_url, $api_key;
    
    $url = "$base_url/stock/stocks?countryId=42&page=$page&pageSize=$pageSize&key=$api_key";
    
    $response = file_get_contents($url);
    $data = json_decode($response, true);
    
    if($data['code'] == 200) {
        return $data['data']['records'];
    }
    throw new Exception("获取数据失败: ".$data['message']);
}

// 使用示例
try {
    $stocks = getMalaysiaStocks();
    foreach($stocks as $stock) {
        echo "股票代码: {$stock['symbol']} 名称: {$stock['name']} 最新价: {$stock['last']}\n";
    }
} catch(Exception $e) {
    echo "错误: ".$e->getMessage();
}
  1. 查询个股详情
function getStockDetail($pid) {
    global $base_url, $api_key;
    
    $url = "$base_url/stock/queryStocks?id=$pid&key=$api_key";
    
    $response = file_get_contents($url);
    return json_decode($response, true)['data'][0];
}

// 示例:查询ID为41602的股票
$detail = getStockDetail(41602);
echo "公司名称: {$detail['name']}\n52周最高: {$detail['high']}\n成交量: {$detail['volume']}";
  1. 获取K线数据
function getKlineData($pid, $interval = 'PT15M') {
    global $base_url, $api_key;
    
    $url = "$base_url/stock/kline?pid=$pid&interval=$interval&key=$api_key";
    
    $response = file_get_contents($url);
    $data = json_decode($response, true);
    
    if($data['code'] == 200) {
        return $data['data'];
    }
    return [];
}

// 使用示例
$kline = getKlineData(7310, 'PT1H');
foreach($kline as $candle) {
    echo date('Y-m-d H:i', $candle['time']/1000)." 开盘:{$candle['open']} 收盘:{$candle['close']}\n";
}
  1. WebSocket实时数据
// 需要安装Ratchet库:composer require cboden/ratchet
use Ratchet\Client\WebSocket;
use React\EventLoop\Factory;

function connectWebsocket() {
    global $api_key;
    
    $loop = Factory::create();
    $connector = new \Ratchet\Client\Connector($loop);

    $connector("wss://ws-api.stocktv.top/connect?key=$api_key")
        ->then(function(WebSocket $conn) {
            $conn->on('message', function($msg) use ($conn) {
                $data = json_decode($msg);
                echo "实时价格更新 [{$data->symbol}]: {$data->last_numeric}\n";
            });

            // 心跳维持
            $loop = Factory::create();
            $loop->addPeriodicTimer(30, function() use ($conn) {
                $conn->send('ping');
            });
        }, function(\Exception $e) {
            echo "连接失败: {$e->getMessage()}\n";
        });

    $loop->run();
}

// 启动监听
connectWebsocket();

三、注意事项
1.错误处理
所有API返回格式:

{
    "code": 200,
    "message": "操作成功",
    "data": {}
}

2.需检查code字段处理异常
3.时区处理
所有时间戳为UTC+0时区,需根据业务需求转换

4.数据缓存
建议缓存高频数据(如K线),避免频繁调用

通过以上接口可实现马来西亚股票市场的行情展示、数据分析、实时监控等功能的开发。建议先从基础行情接口入手,逐步增加实时推送等高级功能。

posted @ 2025-03-11 21:41  CryptoPP  阅读(40)  评论(0)    收藏  举报