众所周知,交易所来的数据都是 tick 级别的数据,之后都需要合成自己的 1min,5min 的数据,但是在周线的合成上有点卡住了.主要是考虑到服务重启之后数据怎么处理.数据怎么落地 在设计这个系统的时候有点卡住了.想请教下大家都有没有类似的需求.. 简单来说就是要做一个实时的行情系统,包括分时,5 分钟,1 天..周,月这些维度的设计
不知道怎么弄,想请教下大家,谢谢了
1
jones2000 283 天前
只算 1 分钟,5 分钟, 日线,就可以了,其它周期都可以通过这几个基础周期合并下就能算出来。行情服务器一般都是双路采集, 一路断了,还是有另外一路。 如果真的 2 路都断了,基本就是重大事故了,需要有人来背锅了。 交易所有提供回放当天数据接口, 回放补齐就可以了。
|
2
phrack 283 天前 via iPhone
挺巧我也在弄这些数据,个人用。
所有的 bar 不都是从 tick 来的吗? 1 minute bar 就把这一分钟里面的 tick 全部取出来,算一下就有 ohlc 数据了呀。一周的不应该也是一样的吗? |
3
ghostwind OP @jones2000 谢谢大佬回复, 想比如说在交易的时候,我需要实时推送某个品种月线数据,
那这个时候是把所有的日线数据都读进来重新计算的么,这时候实时的周线月线又怎么处理呢? 另外请教下这些数据一般存在哪里 |
4
iyiluo 283 天前
做过类似的,分钟数据合成日线。其实逻辑都一样,明白 k 线的生成规则就行,开、收、最高、最低,就四个值,做一下时间片分割,然后对每个时间片遍历一遍就出来了
|
5
iyiluo 283 天前
可以参考一下股票软件的设计,底层需要落地的交易数据有 tick ,1 分钟、5 分钟、日线,其他周期的 k 线图都是从这四种数据算出来的,周线和月线用日线数据遍历一遍就出来了
|
6
crazyweeds 283 天前
数据这块确实麻烦,小弟不才,大概搞了一个月才搞定,只要服务起来就能最终一致,细节确实多。总之呢,服务一定是会重启的,所以设计之初我就考虑到了服务宕机、网络故障等逻辑。
不过目前高可用还差一点,代理高可用了,但是行情节点还没有。 |
8
Sawyerhou 283 天前
@ghostwind 举例,以实时日线更新月线,初始化预计算上个交易日月线 OHLCV ,实时更新 O1=O0,H1=max(H0,P),L1=min(L0,P),C1=P,V1=V0+V ,其他字段、级别类似
|
9
jones2000 283 天前
@ghostwind 推送一般只推动最新一个周期的, 启动的时候你只需要读取最新一个周期需要的数据, 然后新的数据过来,合并下就可以。 日线级的数据存关系型数据库,tick 级的存 Hadoop
|
10
nealot 283 天前
富途的 OpenAPI 其实挺慷慨的 (除了美股要付费)
可以查询 8 年的分钟级 K 线 (以前好像是 2 年) 普通投资者有了这些数据都不用去采集了 |
12
huxianguang 283 天前
@Hariz cXEldUZGMUExNTc4OTc2Mg==
|
13
cloud107202 283 天前
tick 先处理成 snapshot. snapshot 携带日内的累计性质数值,最关键的是成交量与成交额
对于日级别以上的 K ,用 snapshot 触发最新一根周期 K 线的数值变更(最高、最低价、成交量、成交额),这里带一点日期逻辑,比如周 K 线里面,归属于当周就是处理归并到最近一根周 K 线,周一当天这种新的一周开始,就创建全新一根周 K. 分钟级别的没弄过,粗看用 tick 直接搞搞就好 |
14
declandragon 283 天前
以前看到别人的都是小单位的数据,使用 echarts 实现图表, 另外提供大单位的切换按钮,是需要这种效果吗?
|
15
iorilu 283 天前
没必要吧, 很多软件可以直接取啊
tushare akshare |
17
ghostwind OP 感谢回复...那如果针对月线的话,比如现在有 5000 只股票,等于我需要把当月所有的日线都查询下来 5000*22 天 10W 条数据都在启动的时候加载吧
@jones2000 |
18
ghostwind OP @crazyweeds 这块是挺麻烦的.我也是一个人弄.......也没有参考的
|
19
ghostwind OP @declandragon 是类似的...但是如果切换到大单位,应该是服务端重算一遍的吧,不然本地的数据如果日线没有算全的话,不同客户端会不一致
|
20
xsen 283 天前
#13 楼的已经说的很清楚,
对于大级别 k 线已经结束的,处理完之后当历史数据存储起来就可以 有新的数据过来,只需要重新计算最新一根 k 线 |
22
willem1993 283 天前
18 年做过期货的,常用的 K 线我都是用 tick 算好存到数据库的,自定义分钟的 K 线,用最大公约数的 K 线再计算的
|
23
ghostwind OP @willem1993 这里最大公约数的 K 线不知道我理解的对不对,,比如说 保存的是 1min 5min 1H 的 K 线,,这个时候如果我需要 3H 的 K 线 这个时候就是用 1min 5min 1H 和需要 3 H 的最大公约数,把 1H 的 K 线全部取出来,再进行计算返回是吗?那这样的话对于单个品种,比如一些主力合约,如果查询长周期 超过 5 年的数据... 5*250*4 ,差不多是 db 里面一次性查询 5000 条数据,这种情况下怎么保证快速返回呢
@jones2000 真的感谢 |