V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
marine2c
V2EX  ›  程序员

行情高频数据显示

  •  
  •   marine2c · 2020 年 11 月 12 日 · 4186 次点击
    这是一个创建于 1894 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在用的是 zeromq 通过 socket 接收到的行情数据,因为行情数据更新太频繁,太快了肉眼也查看不到,需要把频率控制在 100 毫秒刷新页面一次,请问有什么好的设计么,就是如果两个数据之间间隔小于 100 毫秒就丢弃。

    25 条回复    2020-11-15 22:12:25 +08:00
    jones2000
        1
    jones2000  
       2020 年 11 月 12 日
    收到到本地以后, 自己发快照数据, 如 100ms 发一次变动品种的快照数据。
    jones2000
        2
    jones2000  
       2020 年 11 月 12 日   ❤️ 1
    另外高频数据一般不是用来展示的,浪费, 界面更不上数据变动的。 一般做量化交易,跑实时策略用的。
    marine2c
        3
    marine2c  
    OP
       2020 年 11 月 12 日
    @jones2000 界面总得有实时行情显示吧,如果你说每 100ms 发一次不就变成定时任务了嘛。
    l00t
        4
    l00t  
       2020 年 11 月 12 日
    100ms 刷一次不是你自己说的嘛。你都想 100ms 刷一次了你说到底是实时还是定时?
    marine2c
        5
    marine2c  
    OP
       2020 年 11 月 12 日
    @l00t 我的意思是消息来驱动,如果两个消息到达之间的间隔小于 100ms 则把消息丢弃,当然也可能会更长则显示。
    kanezeng
        6
    kanezeng  
       2020 年 11 月 12 日
    感觉需求没有描述得很清楚。
    如果是界面上只显示一个最新行情,那就每次接收到数据检查一下是否有变动,有变动再做后续处理比如更新显示。
    如果时要画曲线图,也是每次接收到数据检查一下是否有变动,有变动再增加一条变动记录。
    如果没变动就都丢弃呗
    AlohaV2
        7
    AlohaV2  
       2020 年 11 月 12 日
    自己维护一个 per instrument order book / price book,存一下上次更新的时间,下次来行情的时候检查一下呗
    imn1
        8
    imn1  
       2020 年 11 月 12 日
    这个其实是两个步骤,数据还是要及时的,不应降频,显示上控制频率就好了
    marine2c
        9
    marine2c  
    OP
       2020 年 11 月 12 日
    @imn1 是的,数据是一直会接收的,关键是怎么显示降频,有什么好办法吗
    WispZhan
        10
    WispZhan  
       2020 年 11 月 12 日
    ReactiveX,Rx 系列库
    SmiteChow
        11
    SmiteChow  
       2020 年 11 月 12 日
    那要看你刻度单位,秒的话就按秒更新,以此类推
    GBdG6clg2Jy17ua5
        12
    GBdG6clg2Jy17ua5  
       2020 年 11 月 12 日 via iPhone
    才用订阅模式。来一次就推一次,不要主动拉。然后,如果数值不变。不用推。
    Yoock
        13
    Yoock  
       2020 年 11 月 12 日 via iPhone
    降维,算涨速和量比
    mimi888
        14
    mimi888  
       2020 年 11 月 12 日 via Android
    楼主接美股的数据吗?
    BingoXuan
        15
    BingoXuan  
       2020 年 11 月 12 日 via Android
    zmq poll 获取数据,写到缓存里面,时间到了就 publish 出去,页面 subscribe 就好了
    jones2000
        16
    jones2000  
       2020 年 11 月 12 日
    @marine2c 你直接对照市面上主流的高频软件 UI 上面是怎么更新的不就可以了。 用网路工具看下,他的发包频率, 这些东西不是新出来的,5,6年前就有高频数据,都有成熟的解决方案的。
    pelloz
        17
    pelloz  
       2020 年 11 月 12 日
    弄个实现 throttle 或 debounce 的 js 库,手动限制下就好
    mepwang
        18
    mepwang  
       2020 年 11 月 12 日 via iPhone
    高频数据降低频率给人看的话,简单的抽取数据做显示会有遗漏,不如漏掉了这一秒中间的最高价 /最低价等,最好做成 bar 数据
    raycool
        19
    raycool  
       2020 年 11 月 13 日
    数据都有时间戳,判断时间戳,100ms 内的直接丢弃不推送 UI 显示组件
    marine2c
        20
    marine2c  
    OP
       2020 年 11 月 13 日 via iPhone
    @mimi888 港股
    marine2c
        21
    marine2c  
    OP
       2020 年 11 月 13 日 via iPhone
    其实是这样的,我订阅后就必须通过 socket 不断拉数据,我写的是一个 while true 拉数据,不然推送那边会有积压的,至于显不显示是我需要处理的,就是显示的频率肯定要低于拉的频率的,请问各位大佬这样怎么设计。
    treblex
        22
    treblex  
       2020 年 11 月 13 日
    之前看过 okex 的文档,他们的做法是在建立链接之后 发送一条消息,告诉服务器要订阅的内容和更新频率,不知道服务端好不好实现
    yuandong
        23
    yuandong  
       2020 年 11 月 13 日
    用 Rx 组件可以对短时间内多次发生的事件限流,比如 RxJava 或者 Rx.Net 等, 以.Net 为例, 可以用 Observable.Throttle(TimeSpan.FromMilliseconds(100)).Subscribe 这种类似的写法实现。
    hurricane1260
        24
    hurricane1260  
       2020 年 11 月 13 日
    看看股票交易终端的分时行情怎么做的呗
    mimi888
        25
    mimi888  
       2020 年 11 月 15 日 via Android
    @marine2c 港股我也在做,港股现在的 api 基本都是用回调函数,如 sp native api 和富途 api,你这个我还没用过,有兴趣的话,可以私信你联系发式,我们交流一下。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   4213 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 120ms · UTC 05:27 · PVG 13:27 · LAX 21:27 · JFK 00:27
    ♥ Do have faith in what you're doing.