• 请不要在回答技术问题时复制粘贴 AI 生成的内容
marine2c
V2EX  ›  程序员

行情高频数据显示

  •  
  •   marine2c · Nov 12, 2020 · 5042 views
    This topic created in 2181 days ago, the information mentioned may be changed or developed.

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

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