使用PHP对接印度股票数据API实战指南
使用PHP对接印度股票数据API实战指南
前言
印度股市作为亚洲第三大证券市场,吸引了全球投资者的关注。本文将演示如何通过PHP语言对接技术文档StockTV,获取印度股市的实时行情、历史数据及财经资讯。
环境准备
- PHP >= 7.4(需开启cURL扩展)
- Composer依赖管理
- API密钥(需前往官方平台申请)
composer require guzzlehttp/guzzle
核心API对接
1. 获取印度股票市场列表
use GuzzleHttp\Client;$client = new Client(['base_uri' => 'https://api.stocktv.top/stock/stocks','headers' => ['Accept' => 'application/json']
]);$response = $client->get('', ['query' => ['countryId' => 42, // 印度国家ID'pageSize' => 10,'page' => 1,'key' => 'YOUR_API_KEY']
]);$markets = json_decode($response->getBody(), true)['data']['records'];
foreach ($markets as $stock) {echo "股票代码: {$stock['symbol']} | 名称: {$stock['name']} | 最新价: {$stock['last']}\n";
}
2. 实时行情查询
// 查询特定股票(如塔塔咨询服务公司 TCS)
$params = http_build_query(['id' => 41602, // 股票PID'key' => 'YOUR_API_KEY'
]);$response = $client->get("/stock/queryStocks?$params");
$data = json_decode($response->getBody(), true);echo "TCS最新价: {$data['data'][0]['last']}\n";
echo "涨跌幅: {$data['data'][0]['chgPct']}%\n";
3. 印度股指数据
// 获取NIFTY 50指数
$response = $client->get('/stock/indices?countryId=14&flag=IN', ['query' => ['key' => 'YOUR_API_KEY']
]);$index = json_decode($response->getBody(), true)['data'][0];
echo "NIFTY 50最新价: {$index['last']}\n";
echo "3年表现: {$index['performance3Year']}%\n";
4. IPO新股日历
$response = $client->get('/stock/getIpo', ['query' => ['countryId' => 14,'key' => 'YOUR_API_KEY']
]);$ipos = json_decode($response->getBody(), true)['data'];
foreach ($ipos as $ipo) {echo "公司: {$ipo['company']} | 上市日期: {$ipo['date']}\n";
}
高级功能实现
1. WebSocket实时行情
$wsClient = new WebSocket\Client('wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY');$wsClient->onMessage(function ($message) {$data = json_decode($message, true);if ($data['type'] == 1) { // 1代表股票echo "股票{$data['symbol']}最新价: {$data['last_numeric']}\n";}
});$wsClient->connect();
2. K线数据获取
// 获取1小时K线
$params = ['pid' => 7310, // 股票PID'interval' => 'PT1H','key' => 'YOUR_API_KEY'
];$response = $client->get('/stock/kline', ['query' => $params]);
$klines = json_decode($response->getBody(), true)['data'];foreach ($klines as $kline) {echo "时间: {$kline['time']} | 开盘: {$kline['open']}\n";
}
注意事项
- API调用频率:建议每秒不超过5次请求
- 数据延迟:免费版数据可能存在15秒延迟
- 错误处理:
try {$response = $client->request('GET', $url, $options);
} catch (\Exception $e) {echo "Error: {$e->getMessage()}\n";
}
扩展能力
- 多市场支持:通过
countryId
参数切换不同国家市场 - 技术指标:结合TA-Lib库进行技术分析
- 自动化交易:对接Alpaca等券商API实现自动交易
通过以上代码示例,您可以快速构建印度股市数据监控系统、量化交易策略或财经资讯聚合应用。建议在生产环境中添加缓存机制和异常重试逻辑,以提升系统稳定性。