GoForum › 🌐 V2EX

做一个实时股票看板,行情数据到底应该怎么选?

matters · 2026-09-20 11:48 · 0 次点赞 · 0 条回复

最近在折腾一个实时股票看板,原本以为最麻烦的是前端画图,结果做到行情这一块的时候反而卡住了。

一开始我想得特别简单,页面上放几十只股票,实时显示价格和涨跌幅就完事了。结果真的开始接数据以后,发现“实时”这两个字其实还挺容易把事情搞复杂的。

比如我一开始觉得,定时请求一下最新价格就行:

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 ?

还有一个问题我挺好奇的:

你们一般是先确定页面需要什么,再去找数据源,还是会先把能拿到的数据都接进来再说?

0 条回复
添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: matters
发布: 2026-09-20
点赞: 0
回复: 0