读取股票软件的day文件数据

经过一晚上的研究,总算把读取核新数据日K线文件(*.day)的办法搞出来了:

如下:

void OnReadDay(CString DayFileName)
{
FILE *pfDay;
if((pfDay =fopen(DayFileName,"rb"))==NULL)
{
  return;
}

int Header;
int Unused;
int DateField;
unsigned int Open,High,Low,ClosePrice,Volume,Money;
int i;

fread(&Header,sizeof(int),1,pfDay);     //读取文件头的内容,开始,具体内容不重要

for(i=1;i<16;i++)
  fread(&Unused,sizeof(int),1,pfDay);    //读取文件头共计64字节,结束


fread(&DateField,sizeof(int),1,pfDay);    //读取记录的开始,日期
m_strDate.Format("%d",DateField);

fread(&Open,sizeof(unsigned int),1,pfDay);   //开盘价
fread(&High,sizeof(unsigned int),1,pfDay);   //最高价
fread(&Low,sizeof(unsigned int),1,pfDay);   //最低价
fread(&ClosePrice,sizeof(unsigned int),1,pfDay); //收盘价

fread(&Money,sizeof(int),1,pfDay);     //成交金额
fread(&Volume,sizeof(unsigned int),1,pfDay);  //成交量

for(i=1;i<6;i++)
  fread(&Unused,sizeof(unsigned int),1,pfDay); //无用
///第一笔记录全部读取完毕/

double fOpen,fHigh,fLow,fClose,fVol,fMoney;

//把读取数据转换成为保留两位小数的单价。
ConvertPrice(Open,&fOpen);
ConvertPrice(High,&fHigh);
ConvertPrice(Low,&fLow);
ConvertPrice(ClosePrice,&fClose);

//显示在EDIT控件中
m_strOpen.Format("%.2f元",fOpen);
m_strHigh.Format("%.2f元",fHigh);
m_strLow.Format("%.2f元",fLow);
m_strClose.Format("%.2f元",fClose);

fVol = Volume/100.0;        //把成交量换算为手数
fMoney=Money/10000.0;        //把成交金额换算为万元

m_strVolume.Format("%.0f手",fVol);
m_strMoney.Format("%.0f万元",fMoney);

UpdateData(false);

}
//-----------------------------------------------------
void OnBtnOnreadday()
{
OnReadDay("600000.day");

}
//-----------------------------------------------
//从读取的数据中转换常用的浮点数价格
BOOL ConvertPrice(UINT price, double *fPrice)
{
double dbl;
UINT uTemp;

const UINT  baseNumber=0xb0000000;
const double Thousand = 1000.0;

uTemp = price ^ baseNumber;
dbl = uTemp / Thousand;

*fPrice = dbl;
return TRUE;
}

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值