在网上发现通达信的日期用的是两字节的编码的,求解
16714 表示 3月30日16789 表示 4月5日
据说该数据并未包括年份在里面,只有月和日!!!

解决方案 »

  1.   

    最近也在研究通达信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);
      

  2.   

    注:楼上代码是提取了最后一个五分钟的信息,所以有个fseek(fid,-32,'eof'); 
      

  3.   

    放到这里,做个存档用。一、通达信日线*.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 字节:(保留)
        
      

  4.   

    非常感谢,正解
    一、通达信日线*.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 字节:(保留)
      

  5.   

    楼上的5分钟日期计算是正确的.但开收盘等就不对了吧.  日K应该直接是整型,单位为分. 5分钟的是single类型.单位是圆.
      

  6.   

    好长时间不来。
    对于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 字节:(保留)
       
    另外,我也想处理一些数据,是否有愿意合作的?