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

行情高频数据显示

  •  
  •   marine2c 2020-11-12 09:03:15 +08:00 4078 次点击
    这是一个创建于 1845 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    25 条回复    2020-11-15 22:12:25 +08:00
    jones2000
        1
    jones2000  
       2020-11-12 10:10:32 +08:00
    收到到本地以后, 自己发快照数据, 如 100ms 发一次变动品种的快照数据。
    jones2000
        2
    jones2000  
       2020-11-12 10:12:16 +08:00   1
    另外高频数据一般不是用来展示的,浪费, 界面更不上数据变动的。 一般做量化交易,跑实时策略用的。
    marine2c
        3
    marine2c  
    OP
       2020-11-12 10:16:41 +08:00
    @jones2000 界面总得有实时行情显示吧,如果你说每 100ms 发一次不就变成定时任务了嘛。
    l00t
        4
    l00t  
       2020-11-12 12:35:42 +08:00
    100ms 刷一次不是你自己说的嘛。你都想 100ms 刷一次了你说到底是实时还是定时?
    marine2c
        5
    marine2c  
    OP
       2020-11-12 13:03:29 +08:00
    @l00t 我的意思是消息来驱动,如果两个消息到达之间的间隔小于 100ms 则把消息丢弃,当然也可能会更长则显示。
    kanezeng
        6
    kanezeng  
       2020-11-12 13:05:41 +08:00
    感觉需求没有描述得很清楚。
    如果是界面上只显示一个最新行情,那就每次接收到数据检查一下是否有变动,有变动再做后续处理比如更新显示。
    如果时要画曲线图,也是每次接收到数据检查一下是否有变动,有变动再增加一条变动记录。
    如果没变动就都丢弃呗
    AlohaV2
        7
    AlohaV2  
       2020-11-12 13:08:49 +08:00
    自己维护一个 per instrument order book / price book,存一下上次更新的时间,下次来行情的时候检查一下呗
    imn1
        8
    imn1  
       2020-11-12 13:40:03 +08:00
    这个其实是两个步骤,数据还是要及时的,不应降频,显示上控制频率就好了
    marine2c
        9
    marine2c  
    OP
       2020-11-12 13:46:22 +08:00
    @imn1 是的,数据是一直会接收的,关键是怎么显示降频,有什么好办法吗
    WispZhan
        10
    WispZhan  
       2020-11-12 13:52:02 +08:00
    ReactiveX,Rx 系列库
    SmiteChow
        11
    SmiteChow  
       2020-11-12 17:00:26 +08:00
    那要看你刻度单位,秒的话就按秒更新,以此类推
    GBdG6clg2Jy17ua5
        12
    GBdG6clg2Jy17ua5  
       2020-11-12 18:34:28 +08:00 via iPhone
    才用订阅模式。来一次就推一次,不要主动拉。然后,如果数值不变。不用推。
    Yoock
        13
    Yoock  
       2020-11-12 21:02:54 +08:00 via iPhone
    降维,算涨速和量比
    mimi888
        14
    mimi888  
       2020-11-12 21:17:53 +08:00 via Android
    楼主接美股的数据吗?
    BingoXuan
        15
    BingoXuan  
       2020-11-12 21:22:22 +08:00 via Android
    zmq poll 获取数据,写到缓存里面,时间到了就 publish 出去,页面 subscribe 就好了
    jones2000
        16
    jones2000  
       2020-11-12 22:54:18 +08:00
    @marine2c 你直接对照市面上主流的高频软件 UI 上面是怎么更新的不就可以了。 用网路工具看下,他的发包频率, 这些东西不是新出来的,5,6年前就有高频数据,都有成熟的解决方案的。
    pelloz
        17
    pelloz  
       2020-11-12 23:04:36 +08:00
    弄个实现 throttle 或 debounce 的 js 库,手动限制下就好
    mepwang
        18
    mepwang  
       2020-11-12 23:16:47 +08:00 via iPhone
    高频数据降低频率给人看的话,简单的抽取数据做显示会有遗漏,不如漏掉了这一秒中间的最高价 /最低价等,最好做成 bar 数据
    raycool
        19
    raycool  
       2020-11-13 01:17:47 +08:00
    数据都有时间戳,判断时间戳,100ms 内的直接丢弃不推送 UI 显示组件
    marine2c
        20
    marine2c  
    OP
       2020-11-13 07:48:33 +08:00 via iPhone
    @mimi888 港股
    marine2c
        21
    marine2c  
    OP
       2020-11-13 07:53:37 +08:00 via iPhone
    其实是这样的,我订阅后就必须通过 socket 不断拉数据,我写的是一个 while true 拉数据,不然推送那边会有积压的,至于显不显示是我需要处理的,就是显示的频率肯定要低于拉的频率的,请问各位大佬这样怎么设计。
    treblex
        22
    treblex  
       2020-11-13 13:19:16 +08:00
    之前看过 okex 的文档,他们的做法是在建立链接之后 发送一条消息,告诉服务器要订阅的内容和更新频率,不知道服务端好不好实现
    yuandong
        23
    yuandong  
       2020-11-13 14:30:53 +08:00
    用 Rx 组件可以对短时间内多次发生的事件限流,比如 RxJava 或者 Rx.Net 等, 以.Net 为例, 可以用 Observable.Throttle(TimeSpan.FromMilliseconds(100)).Subscribe 这种类似的写法实现。
    hurricane1260
        24
    hurricane1260  
       2020-11-13 14:49:25 +08:00
    看看股票交易终端的分时行情怎么做的呗
    mimi888
        25
    mimi888  
       2020-11-15 22:12:25 +08:00 via Android
    @marine2c 港股我也在做,港股现在的 api 基本都是用回调函数,如 sp native api 和富途 api,你这个我还没用过,有兴趣的话,可以私信你联系发式,我们交流一下。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3980 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 05:30 PVG 13:30 LAX 21:30 JFK 00:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86