- SignalDesk2小时前
最近在折腾一个实时股票看板,原本以为最麻烦的是前端画图,结果做到行情这一块的时候反而卡住了。 一开始我想得特别简单,页面上放几十只股票,实时显示价格和涨跌幅就完事了。结果真的开始接数据以后,发现“实时”这两个字其实还挺容易把事情搞复杂的。 比如我一开始觉得,定时请求一下最新价格就行: AAPL 257.84 +1.23% MSFT 509.70 -0.42% NVDA 177.23 +2.15% 这种当然没什么问题。 但如果页面变成这种感觉: AAPL 257.81 → 257.83 → 257.82 → 257.87 → ... 那我就开始觉得 HTTP 轮询有点别扭了。 我这次拿 AllTick 的股票 WebSocket 随便测了一下,订阅最新成交价大概这样: import json import websocket TOKEN = "YOUR_TOKEN" url = ( "wss://quote.alltick.co/" f"quote-stock-b-ws-api?token={TOKEN}" ) def on_open(ws): ws.send(json.dumps({ "cmd_id": 22004, "seq_id": 123, "trace": "stock-dashboard-demo", "data": { "symbol_list": [ {"code": "AAPL"}, {"code": "MSFT"}, {"code": "NVDA"} ] } })) def on_message(ws, message): data = json.loads(message) if data.get("cmd_id") == 22998: quote = data.get("data", {}) print( quote.get("code"), quote.get("price"), quote.get("volume") ) ws = websocket.WebSocketApp( url, on_open=on_open, on_message=on_message ) ws.run_forever() 这种接起来确实挺顺,数据来了就更新。 但做到这里我又有点犹豫了。 因为我这个看板其实也没想做成什么专业交易终端,可能就几十只股票,显示价格、涨跌、成交量,再加一张分时图。 这种情况下,真的有必要搞 Tick 吗? 我感觉很多时候是自己先被“实时行情”这几个字带跑偏了。 比如页面只是想知道: 现在 AAPL 是多少? 那最新价格就够了。 但如果想知道: 这几秒内到底发生了什么? 那 Tick 就开始有意义了。 再往后,如果还要做盘口: 卖 5 卖 4 卖 3 卖 2 卖 1 ------ 买 1 买 2 买 3 买 4 买 5 又是另一回事。 所以我现在开发的时候,反而经常在纠结一件事: 到底是需求驱动数据,还是最后变成了数据驱动需求。 有时候接了一个数据很全的接口,最后页面就用了一个 price 。 这就挺尴尬的。 还有一个之前没太注意的问题,就是断线。 本地测试的时候完全感觉不到,连上以后数据一直往下刷,看起来很舒服。结果模拟一下网络抖动,页面直接停在最后那个价格,才发现重连、重新订阅、心跳这些东西都不能偷懒。 我现在大概会把它做成: 历史数据 ↓ 画初始图表 WebSocket ↓ 持续更新最新行情 ↓ 前端刷新 至于要不要再加 Tick 、盘口这些,我还在犹豫。 主要也是怕最后为了一个简单看板,搞了一套自己都嫌麻烦的行情系统。 所以想问问这里做过行情 Dashboard 的朋友: 几十只股票的实时看板,你们一般会怎么选? 是最新价格 + K 线就够了,还是会直接上 WebSocket + Tick ? 还有一个问题我挺好奇的: 你们一般是先确定页面需要什么,再去找数据源,还是会先把能拿到的数据都接进来再说?
- 情报分类:商业与市场研究
- 分类依据:内容涉及商业、投资或市场动态
- 信息来源:服务器 / V2EX
- 发布时间:2026/9/20 11:47:50
- 暂无回复