对接马来西亚股票数据API接口文档
对接马来西亚股票数据API接口文档
本文将介绍如何使用Java、Python、PHP和Go等编程语言对接马来西亚股票数据API接口,获取实时股票行情、K线数据等信息。
一、API概述
马来西亚股票数据API提供以下主要功能:
- 市场列表查询
- 单个股票查询
- K线数据获取
- 指数查询
- 公司信息查询
- WebSocket实时数据推送
二、基础配置
所有请求都需要在URL中添加key
参数作为认证凭证。
BASE_URL = "https://api.stocktv.top"
API_KEY = "MY4b781f618e3f43c4b055f25fa61941ad" # 替换为你的API key
三、各语言实现示例
1. 获取马来西亚股票市场列表
Java实现
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;public class MalaysiaStockAPI {public static void main(String[] args) {try {String apiUrl = "https://api.stocktv.top/stock/stocks?countryId=42&pageSize=10&page=1&key=MY4b781f618e3f43c4b055f25fa61941ad";URL url = new URL(apiUrl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String inputLine;StringBuilder response = new StringBuilder();while ((inputLine = in.readLine()) != null) {response.append(inputLine);}in.close();System.out.println(response.toString());} catch (Exception e) {e.printStackTrace();}}
}
Python实现
import requestsdef get_malaysia_stocks():url = "https://api.stocktv.top/stock/stocks"params = {"countryId": 42, # 马来西亚国家ID"pageSize": 10,"page": 1,"key": "MY4b781f618e3f43c4b055f25fa61941ad" # 替换为你的API key}response = requests.get(url, params=params)return response.json()# 调用示例
stocks_data = get_malaysia_stocks()
print(stocks_data)
PHP实现
<?php
function getMalaysiaStocks() {$url = "https://api.stocktv.top/stock/stocks?countryId=42&pageSize=10&page=1&key=MY4b781f618e3f43c4b055f25fa61941ad";$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$response = curl_exec($ch);curl_close($ch);return json_decode($response, true);
}// 调用示例
$stocksData = getMalaysiaStocks();
print_r($stocksData);
?>
Go实现
package mainimport ("encoding/json""fmt""io/ioutil""net/http"
)func getMalaysiaStocks() {url := "https://api.stocktv.top/stock/stocks?countryId=42&pageSize=10&page=1&key=MY4b781f618e3f43c4b055f25fa61941ad"resp, err := http.Get(url)if err != nil {fmt.Println("Error:", err)return}defer resp.Body.Close()body, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Println("Error:", err)return}var result map[string]interface{}json.Unmarshal(body, &result)fmt.Println(result)
}func main() {getMalaysiaStocks()
}
2. 查询单个股票信息
Python实现
def query_stock(stock_id):url = "https://api.stocktv.top/stock/queryStocks"params = {"id": stock_id, # 股票PID"key": "MY4b781f618e3f43c4b055f25fa61941ad"}response = requests.get(url, params=params)return response.json()# 调用示例
stock_data = query_stock(41602) # Media Chinese Int股票
print(stock_data)
Java实现
public static void queryStock(String stockId) {try {String apiUrl = "https://api.stocktv.top/stock/queryStocks?id=" + stockId + "&key=MY4b781f618e3f43c4b055f25fa61941ad";URL url = new URL(apiUrl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String inputLine;StringBuilder response = new StringBuilder();while ((inputLine = in.readLine()) != null) {response.append(inputLine);}in.close();System.out.println(response.toString());} catch (Exception e) {e.printStackTrace();}
}
3. 获取K线数据
Python实现
def get_kline_data(stock_id, interval="PT15M"):url = "https://api.stocktv.top/stock/kline"params = {"pid": stock_id,"interval": interval, # PT5M, PT15M, PT1H, PT5H, P1D, P1W, P1M"key": "MY4b781f618e3f43c4b055f25fa61941ad"}response = requests.get(url, params=params)return response.json()# 调用示例
kline_data = get_kline_data(41602, "PT15M") # 15分钟K线
print(kline_data)
PHP实现
function getKlineData($stockId, $interval = "PT15M") {$url = "https://api.stocktv.top/stock/kline?pid=$stockId&interval=$interval&key=MY4b781f618e3f43c4b055f25fa61941ad";$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$response = curl_exec($ch);curl_close($ch);return json_decode($response, true);
}// 调用示例
$klineData = getKlineData(41602, "PT15M");
print_r($klineData);
4. WebSocket实时数据推送
Python实现
import websockets
import asyncio
import jsonasync def stock_websocket():uri = "wss://ws-api.stocktv.top/connect?key=MY4b781f618e3f43c4b055f25fa61941ad"async with websockets.connect(uri) as websocket:while True:message = await websocket.recv()data = json.loads(message)print("Received:", data)# 这里可以添加处理实时数据的逻辑# 例如: if data.get("pid") == "41602": process_stock_data(data)# 调用示例
asyncio.get_event_loop().run_until_complete(stock_websocket())
JavaScript实现(前端)
// 前端WebSocket实现
const wsUri = "wss://ws-api.stocktv.top/connect?key=MY4b781f618e3f43c4b055f25fa61941ad";
const websocket = new WebSocket(wsUri);// 监听连接
websocket.onopen = function(event) {console.log("Connected to WebSocket server");
};// 监听接收到的信息
websocket.onmessage = function(event) {const data = JSON.parse(event.data);console.log("Received:", data);// 处理实时数据if (data.pid === "41602") {updateStockData(data);}
};// 断开连接
websocket.onclose = function(event) {console.log("Disconnected from WebSocket server");
};// 异常处理
websocket.onerror = function(event) {console.log("Error:", event.data);
};function updateStockData(data) {// 更新UI显示最新价格等信息document.getElementById("last-price").innerText = data.last_numeric;document.getElementById("change").innerText = data.pc;document.getElementById("change-percent").innerText = data.pcp + "%";
}
四、返回数据结构说明
股票数据示例
{"id": 41602,"name": "Media Chinese Int","symbol": "MDCH","last": 0.12,"chg": 0,"chgPct": 0,"high": 0.12,"low": 0.12,"volume": 1241700,"open": false,"last_close": 0.12
}
K线数据示例
{"time": 1719818400000,"open": 239.42,"high": 239.6,"low": 239.42,"close": 239.6,"volume": 0
}
五、注意事项
- 请妥善保管API key,不要泄露
- 注意API调用频率限制
- 实时数据建议使用WebSocket接口
- 错误处理是必须的,网络请求可能会失败
- 马来西亚市场交易时间为工作日9:00-12:30和14:30-17:00(当地时间)
六、总结
本文介绍了如何使用多种编程语言对接马来西亚股票数据API,包括获取市场列表、查询单个股票、获取K线数据以及WebSocket实时推送等功能。开发者可以根据自己的项目需求选择合适的实现方式,构建股票行情监控、分析等应用。
希望这篇文档能帮助你快速接入马来西亚股票数据API,如有任何问题,可以参考官方文档或联系API提供商。