http://icatman.lupaworld.com

来源:互联网 发布:js正则表达式 非负数 编辑:程序博客网 时间:2024/05/23 01:14

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

2007-11-29 12:06:10 / 个人分类:技术

日线文件以"代号"+"股票代码"+".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;
}  
原创粉丝点击