很多想做金融数据分析的同学,往往卡在“数据获取”这第一关。网上的教程要么太老旧,要么代码跑不通。今天,我就把企业级开发中常用的港股行情接入流程拆解开,手把手教你实现。
前言:为什么要用 WebSocket?简单来说,如果 HTTP 是你每隔几秒问服务器“有新数据吗?”,那么 WebSocket 就是服务器主动告诉你“数据来了!”。对于股票行情这种实时性极强的数据,WebSocket 是唯一正确的选择。
Step 1:环境搭建工欲善其事,必先利其器。请确保你的 Python 版本在 3.9 以上。 在终端输入以下命令:
pip install websocket-client
Step 2:编写你的第一个行情脚本不要被“接口”、“协议”这些词吓到。现在的 API 设计已经非常人性化了。比如我们常用来做测试的 AllTick 接口,它的文档逻辑就很符合开发直觉。
我们需要定义几个动作:
连接上服务器时做什么? -> 发送订阅请求(比如我要看腾讯的股票)。
收到数据时做什么? -> 解析数据并展示。
看代码:
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
}))小贴士初次运行时,你可能会觉得数据刷得太快看不清。没关系,这正是我们追求的效果。建议大家先在本地跑通流程,再去研究如何把数据存入数据库。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
