找回密码
 立即注册
首页 业界区 安全 对接马来西亚和印度股票数据API:从实时行情到历史数据 ...

对接马来西亚和印度股票数据API:从实时行情到历史数据的完整指南

福清婉 2025-6-1 20:49:01
摘要:本文将详细介绍如何通过StockTV API对接马来西亚和印度股票市场的实时行情数据,涵盖从API申请、接口调用到数据解析的完整流程,并提供Python代码示例。
一、为什么选择StockTV API?

StockTV API 提供全球多个国家的金融市场数据,其中马来西亚和印度市场数据尤为全面。以下是选择StockTV API的几大理由:

  • 覆盖全面:支持马来西亚Bursa和印度NSE、BSE交易所
  • 实时性强:提供WebSocket实时数据推送
  • 数据丰富:包含股票、指数、期货等多种金融产品
  • 易于集成:提供多种语言的SDK和详细文档
二、准备工作

1. 注册开发者账号

访问StockTV开发者门户,获取测试key并创建应用。
2. 获取API密钥

客服会分配一个唯一的API Key,用于身份验证。
3. 安装依赖
  1. 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实现
  1. import requests
  2. def get_malaysia_stocks(api_key, page_size=20, page=1):
  3.     url = "https://api.stocktv.top/stock/stocks"
  4.     params = {
  5.         "key": api_key,
  6.         "countryId": 42,
  7.         "pageSize": page_size,
  8.         "page": page
  9.     }
  10.    
  11.     response = requests.get(url, params=params)
  12.     response.raise_for_status()
  13.     return response.json()
  14. # 使用示例
  15. api_key = "YOUR_API_KEY"
  16. stocks = get_malaysia_stocks(api_key)
  17. for stock in stocks['data']['records']:
  18.     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实现
  1. def get_indian_stocks(api_key, page_size=20, page=1):
  2.     url = "https://api.stocktv.top/stock/stocks"
  3.     params = {
  4.         "key": api_key,
  5.         "countryId": 14,
  6.         "pageSize": page_size,
  7.         "page": page
  8.     }
  9.    
  10.     response = requests.get(url, params=params)
  11.     response.raise_for_status()
  12.     return response.json()
  13. # 使用示例
  14. stocks = get_indian_stocks(api_key)
  15. for stock in stocks['data']['records']:
  16.     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实现
  1. import websocket
  2. import json
  3. def on_message(ws, message):
  4.     data = json.loads(message)
  5.     if data.get("type") == "stock":
  6.         print(f"[{data['symbol']}] 价格: {data['last']} 涨跌幅: {data['pcp']}%")
  7. def on_error(ws, error):
  8.     print(f"错误: {error}")
  9. def on_close(ws, close_status_code, close_msg):
  10.     print("连接关闭")
  11. def on_open(ws):
  12.     print("连接成功")
  13. # 启动WebSocket客户端
  14. api_key = "YOUR_API_KEY"
  15. ws_url = f"wss://ws-api.stocktv.top/connect?key={api_key}"
  16. ws = websocket.WebSocketApp(ws_url,
  17.                           on_message=on_message,
  18.                           on_error=on_error,
  19.                           on_close=on_close)
  20. ws.on_open = on_open
  21. ws.run_forever()
复制代码
六、获取Nifty50指数数据

1. API接口说明


  • URL: https://api.stocktv.top/stock/indices
  • Method: GET
  • 参数:

    • key: API密钥
    • countryId: 国家ID(印度为14)
    • flag: 国家代码(印度为"IN")

2. Python实现
  1. def get_nifty50_index(api_key):
  2.     url = "https://api.stocktv.top/stock/indices"
  3.     params = {
  4.         "key": api_key,
  5.         "countryId": 14,
  6.         "flag": "IN"
  7.     }
  8.    
  9.     response = requests.get(url, params=params)
  10.     response.raise_for_status()
  11.     return response.json()
  12. # 使用示例
  13. nifty_data = get_nifty50_index(api_key)
  14. for index in nifty_data['data']:
  15.     if index['name'] == 'Nifty 50':
  16.         print(f"Nifty 50 最新价: {index['last']}")
复制代码
七、高级功能

1. 数据缓存
  1. from functools import lru_cache
  2. @lru_cache(maxsize=100)
  3. def get_cached_indian_stocks(api_key):
  4.     return get_indian_stocks(api_key)
复制代码
2. 异常重试
  1. from tenacity import retry, stop_after_attempt, wait_exponential
  2. @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
  3. def get_stocks_with_retry(api_key):
  4.     return get_indian_stocks(api_key)
复制代码
八、常见问题解答

Q1:如何获取完整的股票列表?

  • 通过分页参数遍历所有数据页
  1. def get_all_indian_stocks(api_key):
  2.     page = 1
  3.     all_stocks = []
  4.     while True:
  5.         data = get_indian_stocks(api_key, page=page)
  6.         all_stocks.extend(data['data']['records'])
  7.         if len(data['data']['records']) < 20:
  8.             break
  9.         page += 1
  10.     return all_stocks
复制代码
Q2:WebSocket断线如何处理?

  • 实现自动重连机制
  1. import time
  2. def run_websocket():
  3.     while True:
  4.         try:
  5.             ws.run_forever()
  6.         except Exception as e:
  7.             print(f"连接异常: {e}, 5秒后重连...")
  8.             time.sleep(5)
复制代码
Q3:如何提高数据获取效率?

  • 使用异步请求
  1. import aiohttp
  2. import asyncio
  3. async def async_get_stocks(api_key):
  4.     async with aiohttp.ClientSession() as session:
  5.         url = "https://api.stocktv.top/stock/stocks"
  6.         params = {
  7.             "key": api_key,
  8.             "countryId": 14
  9.         }
  10.         async with session.get(url, params=params) as response:
  11.             return await response.json()
复制代码
九、最佳实践建议


  • 安全防护

    • 使用环境变量存储API密钥
    • 启用HTTPS加密通信

  • 性能优化

    • 使用连接池管理HTTP连接
    • 启用GZIP压缩响应数据

  • 监控告警

    • 记录API调用日志
    • 设置异常告警阈值

  • 数据存储

    • 使用数据库持久化历史数据
    • 定期备份重要数据

十、资源推荐


  • StockTV官方API文档
  • Python requests库文档
  • WebSocket客户端指南
通过本文的指导,您已经掌握了使用StockTV API获取马来西亚和印度实时行情数据的完整方法。建议根据实际业务需求,进一步扩展数据分析和可视化功能,构建专业的金融数据应用系统。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册