一、基础配置
文档明确要求所有 API 请求必须包含key参数,您需要先从 StockTV 获取 API Key。
<?php// StockTV API 配置define('STOCKTV_API_KEY','YOUR_API_KEY_HERE');// 从 StockTV 获取define('STOCKTV_BASE_URL','https://api.stocktv.top');define('KOREA_COUNTRY_ID',11);// 韩国 countryId/** * 通用 API 请求函数 */functionstocktvApiRequest($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)];}curl_close($ch);$decoded=json_decode($response,true);if(json_last_error()!==JSON_ERROR_NONE){return['error'=>'JSON Decode Error'];}return$decoded;}?>二、韩国股票核心接口
基于文档中的通用接口结构和您提供的countryId=11,以下是韩国市场的具体实现:
1. 获取韩国股票市场列表
文档中该接口支持分页获取指定国家的股票列表。
<?phpfunctiongetKoreaStockList($page=1,$pageSize=50,$exchangeId=null){$endpoint='/stock/stocks';$params=['countryId'=>KOREA_COUNTRY_ID,// 韩国'page'=>$page,'pageSize'=>$pageSize,];// 文档提到 exchangeId 是非必要参数,可用于筛选特定交易所if($exchangeId!==null){$params['exchangeId']=$exchangeId;}returnstocktvApiRequest($endpoint,$params);}// 使用示例$result=getKoreaStockList(1,10);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";}}?>接口返回字段(根据文档中的示例):
id: 股票PID,用于后续查询name/symbol: 股票名称和代码last/chg/chgPct: 最新价、涨跌额、涨跌幅high/low/volume: 最高价、最低价、成交量open: 是否开市flag: 国家代码(应为"KR")countryId: 国家ID(应为11)
2. 韩国交易所说明
从文档中的"市场列表"接口示例可以看到交易所ID的注释:
"exchangeId": 62, //交易所ID 1NYSE 2NASDAQ 54上海交易所 103深圳交易所 46NSE 74BSE 53Mexico 144BIVA 60Seoul 110KOSDAQ 51Toronto 108TSXV 109CSE
其中明确提到了韩国的交易所:
- 60Seoul: 首尔证券交易所
- 110KOSDAQ: 韩国科斯达克交易所
因此您可以这样筛选不同交易所的股票:
<?php// 获取首尔交易所的股票functiongetSeoulExchangeStocks(){returngetKoreaStockList(1,50,60);// exchangeId=60}// 获取KOSDAQ的股票functiongetKosdaqStocks(){returngetKoreaStockList(1,50,110);// exchangeId=110}?>3. 查询特定韩国股票
<?phpfunctionqueryKoreaStock($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);// 筛选韩国股票if(isset($result['code'])&&$result['code']==200&&is_array($result['data'])){$result['data']=array_filter($result['data'],function($stock){return($stock['countryId']??0)==KOREA_COUNTRY_ID;});}return$result;}?>4. 获取韩国股票K线数据
<?phpfunctiongetKoreaStockKline($pid,$interval='P1D'){$endpoint='/stock/kline';$params=['pid'=>$pid,'interval'=>$interval,];returnstocktvApiRequest($endpoint,$params);}// 使用示例$klineData=getKoreaStockKline(12345,'P1D');// 12345为示例PIDif(isset($klineData['code'])&&$klineData['code']==200){echo"K线数据获取成功,共".count($klineData['data'])."条记录\n";}?>K线时间间隔参数(来自文档):
PT5M: 5分钟PT15M: 15分钟PT1H: 1小时PT5H: 5小时P1D: 1天P1W: 1周P1M: 1月
5. 获取韩国市场指数
<?phpfunctiongetKoreaIndices(){$endpoint='/stock/indices';$params=['countryId'=>KOREA_COUNTRY_ID];returnstocktvApiRequest($endpoint,$params);}?>预期返回韩国主要指数,如:
- KOSPI(韩国综合股价指数)
- KOSDAQ指数
6. 获取韩国ETF数据
文档中有一个专门的ETF接口,但需要联系客服开通。您也可以从普通股票接口中筛选ETF:
<?phpfunctiongetKoreaETFs(){$endpoint='/stock/stocks';$params=['countryId'=>KOREA_COUNTRY_ID,'pageSize'=>100,];$result=stocktvApiRequest($endpoint,$params);// 筛选ETF(根据pairType或名称包含"ETF")if(isset($result['code'])&&$result['code']==200&&!empty($result['data']['records'])){$result['data']['records']=array_filter($result['data']['records'],function($stock){return(isset($stock['pairType'])&&$stock['pairType']==='ETF')||(stripos($stock['name']??'','ETF')!==false);});}return$result;}?>7. 获取韩国IPO新股日历
<?phpfunctiongetKoreaIpo($type=null){$endpoint='/stock/getIpo';$params=['countryId'=>KOREA_COUNTRY_ID];if(in_array($type,[1,2])){$params['type']=$type;// 1=未上市, 2=已上市}returnstocktvApiRequest($endpoint,$params);}?>8. 获取韩国股票涨跌排行榜
<?phpfunctiongetKoreaStockRank($type=1){$endpoint='/stock/updownList';$params=['countryId'=>KOREA_COUNTRY_ID,'type'=>$type,// 1涨幅榜 2跌幅榜 3涨停榜 4跌停榜];returnstocktvApiRequest($endpoint,$params);}?>三、实时数据推送(WebSocket)
对于实时行情,文档推荐使用WebSocket接口。文档中提供了前端DEMO和Java DEMO链接。
连接地址:wss://ws-api.stocktv.top/connect?key=您的API_KEY
核心步骤:
- 建立WebSocket连接
- 发送订阅消息(包含要订阅的韩国股票PID)
- 接收实时推送
- 维持心跳连接
返回数据格式(来自文档示例):
{"pid":"992844","last_numeric":"0.68","pc":"0.000","pcp":"0.00","volume":"3672800","type":1}四、完整使用示例
<?php// 韩国股票数据监控示例classKoreaStockMonitor{publicfunctionmonitorKoreaMarket(){// 1. 获取韩国股票列表$stocks=getKoreaStockList(1,20);// 2. 获取韩国指数$indices=getKoreaIndices();// 3. 获取涨跌榜$gainers=getKoreaStockRank(1);// 涨幅榜// 4. 获取IPO信息$ipos=getKoreaIpo(1);// 未上市IPOreturn['stocks'=>$stocks,'indices'=>$indices,'gainers'=>$gainers,'ipos'=>$ipos];}publicfunctiongetStockDetail($pid){// 获取股票详细信息$stockInfo=queryKoreaStock($pid);// 获取K线数据$kline=getKoreaStockKline($pid,'P1D');return['info'=>$stockInfo,'kline'=>$kline];}}?>五、重要注意事项
- API Key: 所有请求必须包含有效的
key参数 - 国家ID: 韩国固定为
countryId=11 - 交易所ID: 韩国有两个主要交易所
- 首尔交易所:
exchangeId=60 - KOSDAQ:
exchangeId=110
- 首尔交易所:
- 实时数据: 必须使用WebSocket接口获取实时行情
- 错误处理: 检查返回的
code字段,200表示成功 - 数据更新: 韩国股市交易时间为韩国标准时间(UTC+9)
六、韩国股票市场特点
基于模型预训练知识补充:
- 交易时间: 韩国股市交易时间为平日 09:00-15:30(韩国时间)
- 货币单位: 韩元(KRW)
- 主要指数:
- KOSPI(韩国综合股价指数)
- KOSDAQ(韩国科斯达克指数)
- 涨跌幅限制: 通常为 ±30%
通过以上接口,您可以全面对接韩国股票的实时行情、历史数据、市场指数等信息。请根据您的实际业务需求组合使用这些接口。