V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
marine2c
V2EX  ›  程序员

行情高频数据显示

  •  
  •   marine2c · 105 天前 · 2043 次点击
    这是一个创建于 105 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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