matlab1分钟数据转5分钟,通达信数据格式及5分钟信息提取

一、通达信日线*.day文件

文件名即股票代码

每32个字节为一天数据

每4个字节为一个字段,每个字段内低字节在前

00 ~ 03 字节:年月日, 整型

04 ~ 07 字节:开盘价*100, 整型

08 ~ 11 字节:最高价*100,  整型

12 ~ 15 字节:最低价*100,  整型

16 ~ 19 字节:收盘价*100,  整型

20 ~ 23 字节:成交额(元),float型

24 ~ 27 字节:成交量(股),整型

28 ~ 31 字节:上日收盘*100, 整型

二、通达信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 字节:开盘价*100,整型

08 ~ 11 字节:最高价*100,整型

12 ~ 15 字节:最低价*100,整型

16 ~ 19 字节:收盘价*100,整型

20 ~ 23 字节:成交额*100,float型

24 ~ 27 字节:成交量(股),整型

28 ~ 31 字节:(保留)

三、5分钟信息提取代码

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);

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值