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


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


一、前置准备

1. 获取API密钥

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

2. 安装Python依赖

pip install websocket-client json pandas

二、核心代码实现

1. 建立WebSocket连接

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. 启动实时监听(含自动重连)

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. 添加心跳机制(保持长连接)

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()

三、实时数据示例输出

订阅成功,开始接收实时数据...
[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+标的实时推送


Apace实时历史数据库ApaceRDB是长沙软动信息科技有限公司自主研发的一套基于分布式事务型的通用实时数据库系统,它可以应用于现代工业企业,包括电力、石油、矿山、化工、钢铁、电信、航空等领域,为这些行业的SIS监控系统、仿真系统等提供数据保障。 Apace实时历史数据库Apace提供对实时时序数据的压缩、计算、存储、告警、分发、查询、统计功能,同时,为上层业务系统开发提供了丰富的应用接口,包括组态设计器以及Excel扩展报表插件。 Apace实时历史数据库系统引入了多种创新的技术和理念,各方面的指标在同类软件中都名列前茅。在实时数据采集方面,Apace可以在一台普通服务器上稳定的承载百万点的数据同步更新;在历史数据处理方面,在对多种压缩算法进行研究改进后,创造了Apace独有的魔方无损压缩算法,1万点1年的历史数据仅需5.8GB的空间。同时,Apace独创的索引技术,可以实现检索的时间无关性,即可以从几十、上百年的历史数据中高效的检索任一时间点的数据;在告警服务里,Apace首度提出了趋势拟合和波动拟合告警,这项技术让Apace的告警能力得到了质的飞跃,可实现更为复杂的告警规则;在计算服务方面,计算规则可以采用C#、VB.NET或JScript语言进行编写,支持程序集动态引用技术,算法设计者可以使用自定义的第三方程序集(如VC动态链接库),强化了计算服务的计算能力。 Apace实时历史数据库Apace组态图设计器,可以轻松的设计出仿真式组态图、趋势图、报表等各种所需的组态图,Apace已经为用户提供了20多种基础元件,除了这些基础元件以外,用户还可以根据行业的需要来自定义新的元件;组态图支持客户端脚本编码,可对图中各个元件进行编码控制。在设计过程中,可以随时对组态图进行预览,以查看实际效果,设计完成后通过内置的发布功能,可随时发布到指定的服务器上以供使用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值