对接马来西亚和印度股票数据API:从实时行情到历史数据的完整指南
摘要:本文将详细介绍如何通过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_stocksQ2: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文档
[*]Python requests库文档
[*]WebSocket客户端指南
通过本文的指导,您已经掌握了使用StockTV API获取马来西亚和印度实时行情数据的完整方法。建议根据实际业务需求,进一步扩展数据分析和可视化功能,构建专业的金融数据应用系统。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]