1. 首頁
  2. 計算機軟體

通達信股票軟體日線資料分析

通達信股票軟體日線資料分析

通達信股票軟體日線資料分析
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
#include
#include
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 << " 元 ";
cout << "最高價:" << setw(8) << data.high / 100.0 << " 元 ";
cout << "最低價:" << setw(8) << data.low / 100.0 << " 元 ";
cout << "收盤價:" << setw(8) << data.close / 100.0 << " 元 " <cout << "成交額:" << setw(12) << fixed << setprecision(0) << data.amount << " 元" <cout << "成交量:" << setw(12) << data.vol << " 股" <cout << "昨收盤:" << setw(8) << setprecision(2) << data.reserv/100.0 << " 元" <}

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(&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(&myIn), sizeof(TDSData_Day));
showData(myIn);
}
fin.close();

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