kline k线图
发布于 7 年前 作者 yaleidev 5574 次浏览 来自 问答

有大佬知道k线图的数据结构,技术实现吗? 怎么制作创建分时数据呢?

6 回复

去腾讯自选股抓包吧。按照他的数据格式来。 分时也去抓个包回来就好

echarts能实现,数据结构就按照demo的就ok,

image.png

“{“c”: [0.05565499, 0.05558002], “h”: [0.05565499, 0.05558002], “l”: [0.05565499, 0.05558002], “o”: [0.05565499, 0.05558002], “s”: “ok”, “t”: [1522805729.0, 1522805849.0], “v”: [0.1521, 0.1723]}”

像这样的数据生成是根据什么计算的呢? 是定时器去存储数据库吗

分时数据 1min 5min 15min 1day 5day 1weak 1mon 这样的分类怎么根据交易记录提取计算存储的呢

求大神给予建设性架构性的指导呀

分享一下个人愚见

前公司有做过相关的虚拟币交易平台,其中就有k线图数据,那时候我是做前端,不设计到这个架构,但是跟后端讨论过,他是怎么实现的:

首先交易记录是一个表,记录了xx日xx时xx分xx秒交易,交易金额等其他信息,那怎么提取这些信息成分时数据呢?

首先有个概念: K图数据是没有翻页的,是一次性返回所有需要的数据,意味着你不需要定时去统计这些信息然后存表。

首先以天为例: 筛选近半年,每天的数据

  1. 数据库筛选出半年前-今天的所有交易记录,得出一个很长很长的数组。
  2. 从这些数组中按照交易时间的天进行分类
  3. 然后统计天的数据,当前的开盘价/收盘价,当天最高,最低
  4. 整理数据,返回给前端
  5. 前端只要有开盘/收盘/最高/最低,就能绘制出k线图

这个是按照天来算,是最简单的。

假如按照15min来分类,也是一样的,在上面的步骤2,按照15分进行分类。

这是比较基础的架构,有一个缺点: API调用的时候,必须指定时间范围,也就是在K线图内指定 一月, 半年, 一年, 三年 , 所有

后端是一次性返回,会早很多的流量流失,很多的数据流量是没有必要的.

所以后续优化的话,可以通过动态加载

比如: 用户筛选 三年内 的K线图数据,但是K线图只展示1年内的,可以通过拖动滚动条看前面2年的数据。

这时候就可以通过动态加载。

还有频繁的查询这么长时间跨度的K线数据,对服务器造成不小压力,可以适当的使用缓存,例如查询1min的数据,就不缓存,查询1day的数据,缓存5分钟,查

一般在初始化K线图的时候,才这么去请求。初始化完之后,就等着接收Websocket的推送事实更新K线图了

如有不对,望大神指点

回到顶部