通达信5分钟数据格式

szyicol 2012-04-25 10:03:56
在网上发现通达信的日期用的是两字节的编码的,求解




16714 表示 3月30日

16789 表示 4月5日


据说该数据并未包括年份在里面,只有月和日!!!
...全文
2486 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
feelinn 2013-07-19
  • 打赏
  • 举报
回复
好长时间不来。 对于5分钟数据: 00~03为时间,可以采用整型数据,如int aa; 00~01为时间,从00开始的分钟数。 02~03为日期,不包含年 如果要算法,可以是: int time=(aa/65536)得出570,表示9:30,得出900:,表示15:00 int day=aa-time*65536;得出402,表示4月2号; 04 ~ 07 字节:开盘价(分),float 08 ~ 11 字节:最高价(分),float 12 ~ 15 字节:最低价(分),float 16 ~ 19 字节:收盘价(分),float 20 ~ 23 字节:成交额(元),float型 24 ~ 27 字节:成交量(股) 28 ~ 31 字节:(保留) 另外,我也想处理一些数据,是否有愿意合作的?
khzide 2013-07-15
  • 打赏
  • 举报
回复
楼上的5分钟日期计算是正确的.但开收盘等就不对了吧. 日K应该直接是整型,单位为分. 5分钟的是single类型.单位是圆.
一路东行 2013-07-09
  • 打赏
  • 举报
回复
非常感谢,正解 一、通达信日线*.day文件 文件名即股票代码 每32个字节为一天数据 每4个字节为一个字段,每个字段内低字节在前 00 ~ 03 字节:年月日, 整型 04 ~ 07 字节:开盘价*1000, 整型 08 ~ 11 字节:最高价*1000, 整型 12 ~ 15 字节:最低价*1000, 整型 16 ~ 19 字节:收盘价*1000, 整型 20 ~ 23 字节:成交额(元),float型 24 ~ 27 字节:成交量(手),整型 28 ~ 31 字节:上日收盘*1000, 整型 二、通达信5分钟线*.5文件 每32个字节为一个5分钟数据,每字段内低字节在前 00 ~ 01 字节:日期,整型,设其值为num,则日期计算方法为: year=floor(num/2048)+2004; month=floor(mod(num,2048)/100); day=mod(mod(num,2048),100); 02 ~ 03 字节: 从0点开始至目前的分钟数,整型 04 ~ 07 字节:开盘价(分),整型 08 ~ 11 字节:最高价(分),整型 12 ~ 15 字节:最低价(分),整型 16 ~ 19 字节:收盘价(分),整型 20 ~ 23 字节:成交额(元),float型 24 ~ 27 字节:成交量(股) 28 ~ 31 字节:(保留)
newsearch 2013-04-23
  • 打赏
  • 举报
回复
楼上确定是这么算的?
eefluo 2013-04-09
  • 打赏
  • 举报
回复
注:楼上代码是提取了最后一个五分钟的信息,所以有个fseek(fid,-32,'eof');
eefluo 2013-04-09
  • 打赏
  • 举报
回复
最近也在研究通达信5分钟数据格式,网上实在找不到正确的,只能自己摸索,高手不愿露面,就让我来献丑,下面把信息提取代码给出来,matlab通过,具体自己看。 clear all; fn='sh600xxx.5'; fid=fopen(fn,'r'); fseek(fid,-32,'eof'); date=fread(fid,1,'uint16'); %读日期 year=floor(date/2048)+2004; %提取年信息 mon=floor(mod(date,2048)/100); %提取月信息 day=mod(mod(date,2048),100); %提取日信息 tm=fread(fid,1,'uint16'); %读时间 tm=floor(tm/60)*100+mod(tm,60); %转为几点(千、百位)几分(十、个位) prices=fread(fid,4,'uint32'); %读开盘、最高、最低、收盘四个价格 prices=prices/100; current=fread(fid,1,'single'); %读成交额(元) deals=fread(fid,1,'ulong'); %读成交量(股) s=sprintf('\n%d-%d-%d %d open=%0.2f, max=%0.2f, min=%0.2f, close=%0.2f',year,mon,day,tm,prices(1),prices(2),prices(3),prices(4)); disp(s) s=sprintf(' cur=%0.2f deals=%u avep=%0.2f\n',current,deals,current/deals); disp(s) fclose(fid);
eefluo 2013-04-09
  • 打赏
  • 举报
回复
放到这里,做个存档用。 一、通达信日线*.day文件 文件名即股票代码 每32个字节为一天数据 每4个字节为一个字段,每个字段内低字节在前 00 ~ 03 字节:年月日, 整型 04 ~ 07 字节:开盘价*1000, 整型 08 ~ 11 字节:最高价*1000, 整型 12 ~ 15 字节:最低价*1000, 整型 16 ~ 19 字节:收盘价*1000, 整型 20 ~ 23 字节:成交额(元),float型 24 ~ 27 字节:成交量(手),整型 28 ~ 31 字节:上日收盘*1000, 整型 二、通达信5分钟线*.5文件 每32个字节为一个5分钟数据,每字段内低字节在前 00 ~ 01 字节:日期,整型,设其值为num,则日期计算方法为: year=floor(num/2048)+2004; month=floor(mod(num,2048)/100); day=mod(mod(num,2048),100); 02 ~ 03 字节: 从0点开始至目前的分钟数,整型 04 ~ 07 字节:开盘价(分),整型 08 ~ 11 字节:最高价(分),整型 12 ~ 15 字节:最低价(分),整型 16 ~ 19 字节:收盘价(分),整型 20 ~ 23 字节:成交额(元),float型 24 ~ 27 字节:成交量(股) 28 ~ 31 字节:(保留)
xingyihermit 2013-03-11
  • 打赏
  • 举报
回复
再补充一句:5楼的方法从思路上是错误的,大家不要在这个方向尝试了。
xingyihermit 2013-03-11
  • 打赏
  • 举报
回复
不清楚楼主是否已经研究出通达信5分钟的时间规律,在下这几天研究通达信的5分钟和分时图数据结构,已经找出了5分钟日期的正确转换方法。 如果想交流的话,可以加在下的QQ:813089514,说明是探讨股票数据分析方面的东西即可。 有其他的朋友如果也正在研究交易系统有关的东西,也可以加我,大家共同研究,共同提高
happyrain2010 2012-04-25
  • 打赏
  • 举报
回复
不知所云
烈火蜓蜻 2012-04-25
  • 打赏
  • 举报
回复
多几组数据,再推算一下,
可以用数学的方法来解决。
szyicol 2012-04-25
  • 打赏
  • 举报
回复
可能是提供的数据不全,经过验证,上面的方法不能通过
因为发现4月6日是16790 跟5日只隔了1,也就是最小单位还是1天

烈火蜓蜻 2012-04-25
  • 打赏
  • 举报
回复
16714 表示 3月30日

16789 表示 4月5日

先求出1的单位是多少呀
16789-16714=75,
4,5-3,30=6天
75/6=12余3
那么可以估计出,1的单位是一个小时。
那么
16789-3=16786/12=1398天
也就是,
某个日期+1398天=某年4月5日零3小时。
如果假设这个年份是代表今年的话,就可以推算出,起始的年月日了

个人想法。
szyicol 2012-04-25
  • 打赏
  • 举报
回复
对,就是这个算法怎么写?
szyicol 2012-04-25
  • 打赏
  • 举报
回复
对,就是这个算法怎么写?
  • 打赏
  • 举报
回复
16714 表示 3月30日

16789 表示 4月5日

从左到右他肯定有个算法的啊
你求解什么?
这个算法怎么写的??

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧