摘要:本文将详细介绍如何通过StockTV API对接马来西亚和印度股票市场的实时行情数据,涵盖从API申请、接口调用到数据解析的完整流程,并提供Python代码示例。
一、为什么选择StockTV API?
StockTV API 提供全球多个国家的金融市场数据,其中马来西亚和印度市场数据尤为全面。以下是选择StockTV API的几大理由:
- 覆盖全面:支持马来西亚Bursa和印度NSE、BSE交易所
- 实时性强:提供WebSocket实时数据推送
- 数据丰富:包含股票、指数、期货等多种金融产品
- 易于集成:提供多种语言的SDK和详细文档
二、准备工作
1. 注册开发者账号
访问StockTV开发者门户,获取测试key并创建应用。
2. 获取API密钥
客服会分配一个唯一的API Key,用于身份验证。
3. 安装依赖
pip install requests websocket-client
三、获取马来西亚股票数据
1. API接口说明
- URL:
https://api.stocktv.top/stock/stocks
- Method: GET
参数:
key
: API密钥countryId
: 国家ID(马来西亚为42)pageSize
: 每页数量page
: 页码
2. Python实现
import requests
def get_malaysia_stocks(api_key, page_size=20, page=1):
url = "https://api.stocktv.top/stock/stocks"
params = {
"key": api_key,
"countryId": 42,
"pageSize": page_size,
"page": page
}
response = requests.get(url, params=params)
response.raise_for_status()
return response.json()
# 使用示例
api_key = "YOUR_API_KEY"
stocks = get_malaysia_stocks(api_key)
for stock in stocks['data']['records']:
print(f"{stock['name']}: {stock['last']}")
四、获取印度股票数据
1. API接口说明
- URL:
https://api.stocktv.top/stock/stocks
- Method: GET
参数:
key
: API密钥countryId
: 国家ID(印度为14)pageSize
: 每页数量page
: 页码
2. Python实现
def get_indian_stocks(api_key, page_size=20, page=1):
url = "https://api.stocktv.top/stock/stocks"
params = {
"key": api_key,
"countryId": 14,
"pageSize": page_size,
"page": page
}
response = requests.get(url, params=params)
response.raise_for_status()
return response.json()
# 使用示例
stocks = get_indian_stocks(api_key)
for stock in stocks['data']['records']:
print(f"{stock['name']}: {stock['last']}")
五、获取实时行情数据
1. WebSocket接口说明
- URL:
wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY
- 数据格式: JSON
字段说明:
symbol
: 股票代码last
: 最新价格pcp
: 涨跌幅
2. Python实现
import websocket
import json
def on_message(ws, message):
data = json.loads(message)
if data.get("type") == "stock":
print(f"[{data['symbol']}] 价格: {data['last']} 涨跌幅: {data['pcp']}%")
def on_error(ws, error):
print(f"错误: {error}")
def on_close(ws, close_status_code, close_msg):
print("连接关闭")
def on_open(ws):
print("连接成功")
# 启动WebSocket客户端
api_key = "YOUR_API_KEY"
ws_url = f"wss://ws-api.stocktv.top/connect?key={api_key}"
ws = websocket.WebSocketApp(ws_url,
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.on_open = on_open
ws.run_forever()
六、获取Nifty50指数数据
1. API接口说明
- URL:
https://api.stocktv.top/stock/indices
- Method: GET
参数:
key
: API密钥countryId
: 国家ID(印度为14)flag
: 国家代码(印度为"IN")
2. Python实现
def get_nifty50_index(api_key):
url = "https://api.stocktv.top/stock/indices"
params = {
"key": api_key,
"countryId": 14,
"flag": "IN"
}
response = requests.get(url, params=params)
response.raise_for_status()
return response.json()
# 使用示例
nifty_data = get_nifty50_index(api_key)
for index in nifty_data['data']:
if index['name'] == 'Nifty 50':
print(f"Nifty 50 最新价: {index['last']}")
七、高级功能
1. 数据缓存
from functools import lru_cache
@lru_cache(maxsize=100)
def get_cached_indian_stocks(api_key):
return get_indian_stocks(api_key)
2. 异常重试
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
def get_stocks_with_retry(api_key):
return get_indian_stocks(api_key)
八、常见问题解答
Q1:如何获取完整的股票列表?
通过分页参数遍历所有数据页
def get_all_indian_stocks(api_key): page = 1 all_stocks = [] while True: data = get_indian_stocks(api_key, page=page) all_stocks.extend(data['data']['records']) if len(data['data']['records']) < 20: break page += 1 return all_stocks
Q2:WebSocket断线如何处理?
实现自动重连机制
import time def run_websocket(): while True: try: ws.run_forever() except Exception as e: print(f"连接异常: {e}, 5秒后重连...") time.sleep(5)
Q3:如何提高数据获取效率?
使用异步请求
import aiohttp import asyncio async def async_get_stocks(api_key): async with aiohttp.ClientSession() as session: url = "https://api.stocktv.top/stock/stocks" params = { "key": api_key, "countryId": 14 } async with session.get(url, params=params) as response: return await response.json()
九、最佳实践建议
安全防护
- 使用环境变量存储API密钥
- 启用HTTPS加密通信
性能优化
- 使用连接池管理HTTP连接
- 启用GZIP压缩响应数据
监控告警
- 记录API调用日志
- 设置异常告警阈值
数据存储
- 使用数据库持久化历史数据
- 定期备份重要数据
十、资源推荐
通过本文的指导,您已经掌握了使用StockTV API获取马来西亚和印度实时行情数据的完整方法。建议根据实际业务需求,进一步扩展数据分析和可视化功能,构建专业的金融数据应用系统。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。