使用WebSocket实时获取印度股票数据源(无调用次数限制)实战


使用WebSocket实时获取印度股票数据源(无调用次数限制)实战


一、前置准备

1. 获取API密钥

登录 StockTV开发者平台 → 联系客服获取测试Key(格式MY4b781f618e3f43c4b055f25fa61941ad),该密钥无调用次数限制且支持实时数据持续订阅。

2. 安装Python依赖

bash 复制代码
pip install websocket-client json pandas

二、核心代码实现

1. 建立WebSocket连接

python 复制代码
import websocket
import json
import time

API_KEY = "YOUR_API_KEY"
WS_URL = f"wss://ws-api.stocktv.top/connect?key={API_KEY}"

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(f"连接关闭: {close_msg}")

def on_open(ws):
    """连接成功后订阅股票"""
    subscribe_msg = json.dumps({
        "action": "subscribe",
        "symbols": ["RELIANCE", "NSEI"]  # 印度信实工业/Nifty50指数
    })
    ws.send(subscribe_msg)
    print("订阅成功,开始接收实时数据...")

2. 启动实时监听(含自动重连)

python 复制代码
def start_websocket():
    while True:
        try:
            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()
        except Exception as e:
            print(f"连接异常,5秒后重连: {str(e)}")
            time.sleep(5)

# 启动线程持续运行
import threading
threading.Thread(target=start_websocket, daemon=True).start()

3. 添加心跳机制(保持长连接)

python 复制代码
def send_heartbeat(ws):
    """每30秒发送心跳包"""
    while True:
        try:
            ws.send(json.dumps({"action": "ping"}))
            time.sleep(30)
        except Exception as e:
            break

# 在on_open函数中启动心跳线程
def on_open(ws):
    # ...原有订阅代码...
    threading.Thread(target=send_heartbeat, args=(ws,), daemon=True).start()

三、实时数据示例输出

text 复制代码
订阅成功,开始接收实时数据...
[RELIANCE] 价格: 2856.15 涨跌幅: +1.23%
[NSEI] 价格: 22985.40 涨跌幅: +0.75%
[RELIANCE] 价格: 2857.80 涨跌幅: +1.35% 

四、关键参数说明

字段 说明 示例值
symbol 股票/指数代码 RELIANCE, NSEI
last 最新成交价 2856.15
pcp 涨跌幅百分比(自动带±号) +1.23%
volume 成交量(股) 1254875
timestamp 数据时间戳(Unix毫秒级) 1725002394123

五、注意事项

  1. 连接稳定性

    通过自动重连机制+心跳包保障7×24小时持续运行

  2. 数据时效性

    印度市场交易时段为IST 9:15-15:30(北京时间11:45-18:00),非交易时段无实时数据推送

  3. 性能优化

    建议使用异步处理框架(如asyncio)避免数据堆积,实测单连接可承载100+标的实时推送


相关推荐
yubo05091 分钟前
YOLO系列——实时屏幕检测
开发语言·windows·python
weixin_4573402117 分钟前
RTX5060 Ti显卡安装cuda版本PyTorch踩坑记录
人工智能·pytorch·python
Chan1624 分钟前
【 设计模式 | 结构型模式 代理模式 】
java·spring boot·后端·设计模式·intellij-idea
南囝coding31 分钟前
Vercel 发布 AI Gateway 神器!可一键访问数百个模型,助力零门槛开发 AI 应用
前端·后端
耀耀_很无聊42 分钟前
14_Spring Boot 跨域(CORS)处理指南
spring boot·后端
测试19981 小时前
Web自动化测试之测试用例流程设计
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
他日若遂凌云志1 小时前
深入拆解 Windows Socket 五种 I/O 模型:核心机制、Linux 差异与场景适配
后端
小码编匠1 小时前
开箱即用!集成 YOLO+OpenCV+OCR 的 WebAI 平台(支持RTSP/RTMP视频流识别与自训练)
spring boot·后端·opencv
小红1 小时前
网络通信基石:从IP地址到子网划分的完整指南
前端·网络协议
火车叼位1 小时前
TLS证书验证绕过的陷阱:从Node.js警告到跨平台安全实践
网络协议