通达信股票软件日线数据分析

日线文件以"代号"+"股票代码"+".day"命名,代号为"sh"或"sz",股票代码6位,一个记录32个字节。
 以深发展1997年1月2日的数据为例:
 00000000h: 36 B8 30 01 72 06 00 00 86 06 00 00 60 06 00 00 ;
 00000010h: 72 06 00 00 77 69 D4 4C 68 FE 66 00 74 06 00 00 ;
 以下是分解
 00000000h:|36 B8 30 01|72 06 00 00|86 06 00 00|60 06 00 00|;
 [36 B8 30 01] = 0x0130B836 = 19970102        日期[unsigned long]
 [72 06 00 00] = 0x00000672 = 1650/100 = 16.50    开盘[unsigned long]
 [86 06 00 00] = 0x00000686 = 1670/100 = 16.70    最高[unsigned long]
 [60 06 00 00] = 0x00000660 = 1632/100 = 16.32    最低[unsigned long]
 00000010h:|72 06 00 00|77 69 D4 4C|68 FE 66 00|74 06 00 00|;
 [72 06 00 00] = 0x00000672 = 1650/100 = 16.50    收盘[unsigned long]
 [77 69 D4 4C] = 0x4CD46977 = 111365048.0    成交额[float]
 [68 FE 66 00] = 0x0066FE68 = 6749800        成交量[unsigned long]

 [74 06 00 00] = 0x00000674 = 1652/100 = 16.52    上日收盘[unsigned long](保留)

#include <iostream>
 #include<iomanip>
 #include <fstream>
 using namespace std;

 struct TDSData_Day
 {
     unsigned long date;             //日期
     unsigned long open;             //开盘价,单位:分
     unsigned long high;             //最高价,单位:分
     unsigned long low;              //最低价,单位:分
     unsigned long close;            //收盘价,单位:分
     float amount;                   //交易金额,单位:元
     unsigned long vol;              //成交量,单位:股
     int reserv;                     //保留,有时用来保存上一交易日收盘价
 };

 void showData(TDSData_Day data)
 {
      cout << "日  期:" << data.date << endl;
      cout << "开盘价:" << setw(8) << setprecision(2) << data.open / 100.0 << " 元\t";
      cout << "最高价:" << setw(8) << data.high / 100.0 << " 元\t";
      cout << "最低价:" << setw(8) << data.low / 100.0 << " 元\t";
      cout << "收盘价:" << setw(8) << data.close / 100.0 << " 元\t" <<endl;
      cout << "成交额:" << setw(12) << fixed << setprecision(0) << data.amount << " 元" <<endl;
      cout << "成交量:" << setw(12) << data.vol << " 股" <<endl;
      cout << "昨收盘:" << setw(8) << setprecision(2) << data.reserv/100.0 << " 元" <<endl;
 }

 int main()
 {
     TDSData_Day myIn;
     cout << "文件读出测试" << endl;
     
     ifstream fin;
     const char* fname = "D:\\new_dgzq\\Vipdoc\\sz\\lday\\sz000001.day";
     fname ="sz000001.day";
     fin.open(fname,ios::binary | ios::in);
     for(int i = 0; i < 5; i++)
     {
             fin.read(reinterpret_cast<char*>(&myIn), sizeof(TDSData_Day));
             showData(myIn);
     }
     fin.close();
     fname ="sz000002.day";
     fin.open(fname,ios::binary | ios::in);
     for(int i = 0; i < 5; i++)
     {
             fin.read(reinterpret_cast<char*>(&myIn), sizeof(TDSData_Day));
             showData(myIn);
     }
     fin.close();

     cout << "Done!";
     return 0;
 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值