有大佬知道k线图的数据结构,技术实现吗? 怎么制作创建分时数据呢?
去腾讯自选股抓包吧。按照他的数据格式来。 分时也去抓个包回来就好
echarts能实现,数据结构就按照demo的就ok,
“{“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图数据是没有翻页的,是一次性返回所有需要的数据,意味着你不需要定时去统计这些信息然后存表。
首先以天为例: 筛选近半年,每天的数据
- 数据库筛选出半年前-今天的所有交易记录,得出一个很长很长的数组。
- 从这些数组中按照交易时间的天进行分类
- 然后统计天的数据,当前的开盘价/收盘价,当天最高,最低
- 整理数据,返回给前端
- 前端只要有开盘/收盘/最高/最低,就能绘制出k线图
这个是按照天来算,是最简单的。
假如按照15min来分类,也是一样的,在上面的步骤2,按照15分进行分类。
这是比较基础的架构,有一个缺点: API调用的时候,必须指定时间范围,也就是在K线图内指定 一月, 半年, 一年, 三年 , 所有
后端是一次性返回,会早很多的流量流失,很多的数据流量是没有必要的.
所以后续优化的话,可以通过动态加载
比如: 用户筛选 三年内 的K线图数据,但是K线图只展示1年内的,可以通过拖动滚动条看前面2年的数据。
这时候就可以通过动态加载。
还有频繁的查询这么长时间跨度的K线数据,对服务器造成不小压力,可以适当的使用缓存,例如查询1min的数据,就不缓存,查询1day的数据,缓存5分钟,查
一般在初始化K线图的时候,才这么去请求。初始化完之后,就等着接收Websocket的推送事实更新K线图了
如有不对,望大神指点