继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【新手必读】Python 金融实战:10分钟搞定港股 WebSocket 行情接入

慕盖茨9520025
关注TA
已关注
手记 18
粉丝 0
获赞 0

很多想做金融数据分析的同学,往往卡在“数据获取”这第一关。网上的教程要么太老旧,要么代码跑不通。今天,我就把企业级开发中常用的港股行情接入流程拆解开,手把手教你实现。

前言:为什么要用 WebSocket?简单来说,如果 HTTP 是你每隔几秒问服务器“有新数据吗?”,那么 WebSocket 就是服务器主动告诉你“数据来了!”。对于股票行情这种实时性极强的数据,WebSocket 是唯一正确的选择。

Step 1:环境搭建工欲善其事,必先利其器。请确保你的 Python 版本在 3.9 以上。 在终端输入以下命令: 

pip install websocket-client

Step 2:编写你的第一个行情脚本不要被“接口”、“协议”这些词吓到。现在的 API 设计已经非常人性化了。比如我们常用来做测试的 AllTick 接口,它的文档逻辑就很符合开发直觉。

我们需要定义几个动作:

  1. 连接上服务器时做什么? -> 发送订阅请求(比如我要看腾讯的股票)。

  2. 收到数据时做什么? -> 解析数据并展示。

看代码: 

import websocket
import json

url = "wss://api.alltick.co/realtime/hk"

def on_message(ws, message):
    data = json.loads(message)
    # 打印最新成交价和涨跌情况
    print(f"{data['symbol']} 最新价格: {data['last_price']} 涨跌: {data['change']}")

def on_open(ws):
    # 订阅恒生指数及指定股票行情
    ws.send(json.dumps({
        "action": "subscribe",
        "symbols": ["HSI", "00700.HK"]
    }))

ws = websocket.WebSocketApp(url, on_message=on_message, on_open=on_open)
ws.run_forever()

Step 3:数据的初步处理拿到数据只是一串字符串,不好看。我们需要把它变成表格的形式。这里需要用到数据分析神器 Pandas。

import pandas as pd

# 假设我们有一个行情列表
ticks = [
    {"time": "09:30:01", "price": 500, "volume": 100},
    {"time": "09:30:02", "price": 502, "volume": 50},
    {"time": "09:30:03", "price": 501, "volume": 80},
]

df = pd.DataFrame(ticks)
df['time'] = pd.to_datetime(df['time'])
print(df)

symbols = ["HSI", "00700.HK", "09988.HK", "03888.HK"]

def on_open_multi(ws):
    ws.send(json.dumps({
        "action": "subscribe",
        "symbols": symbols
    }))

小贴士初次运行时,你可能会觉得数据刷得太快看不清。没关系,这正是我们追求的效果。建议大家先在本地跑通流程,再去研究如何把数据存入数据库。

https://img1.sycdn.imooc.com/0ef8c269087829d316000893.jpg


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP