通信达股票数据格式读取程序

通信达股票数据格式读取程序
2008-11-21 19:39

例如读取600237 铜峰电子得日数据.

使用ultraedit 带开D:/common/stock/jcb_gx/Vipdoc/sh/lday/sh600237.day文件

显示如下:

49 7E 31 01 3F 07 00 00 56 07 00 00 3F 04 00 00

3F 07 00 00 97 B0 8D 49 C0 F3 00 00 44 07 00 00

这是是31字节,没四个字节一组数据

分别表示如下信息:

日期 开盘价 最高价 最低价 收盘价 成交量

日期信息: 49 7E 31 01   => 十六进制 01 31 7E 49 => 十进制 20020809 代表了2002年8月9日得数据

开盘价:    3F 07 00 00   => 十六进制 00 00 07 3F=> 十进制 1855      除以100就代表开盘价位18.55元

最高价      56 07 00 00   => 十六进制   00 00 07 56 => 十进制 1878       除以100就代表最高价是18.78元

余下类推。。。

下面是转载来修改改过得读取此文件的vc代码,修改include和Sleep(1000)变成sleep(1)可以在linux编译。

// stock.cpp
//

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include<string>  
#include<iostream>  
#include   "windows.h"

using   namespace   std;  

typedef struct
{
    int date;//4字节 int类型也是1
    int open;
    int high;
    int low;
    int close;
    int amount;
    int vol;
    int reservation;
} StockData;

StockData stockData;
int read_data(FILE *);

int main (int argc, char *argv[])
{
    FILE *fp;
if((fp=fopen("D://common//stock//jcb_gx//Vipdoc//sh//lday//sh999999.day","rb"))==NULL)
    {
   printf("Error: Can^t open file ! ");
   exit(0);
}
    read_data(fp);
    fclose(fp);
    if(getch()==0) getch();
    exit(0);
}

int read_data(FILE *fp)
{
    float fn;
    while(! feof(fp)){
        fread(&stockData,sizeof(StockData),1,fp);
   cout<<"单个记录长度 "<<sizeof(StockData)<<endl;
        printf("日期 %10lu ",stockData.date);
        fn=((float)(stockData.open))/100;
        printf("开牌价 %8.2f ",fn);
        fn=float(stockData.high)/100;
        printf("最高价 %8.2f ",fn);
        fn=float(stockData.low)/100;
   printf("最低价 %8.2f ",fn);
        fn=float(stockData.close)/100;
        printf("收盘价 %8.2f ",fn);
        printf("多多 %8lu ",stockData.amount);
   fn=float(stockData.vol)/100;
        printf("成交量 %8.1f ",fn);
   printf("reservation %8lu ",stockData.reservation);
   //Sleep(1000);
   cout<<endl;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值