matters
V2EX  ›  投资

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

  •  
  •   matters · 4h 41m ago · 234 views

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

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

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

    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 ?

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

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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5237 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 08:29 · PVG 16:29 · LAX 01:29 · JFK 04:29
    ♥ Do have faith in what you're doing.