大智慧二和大智慧三的日線數據格式沒有變化。這個文檔適用于c++開發人員。
本文檔由alantop原創,轉載請標明. 來自 http://alantop.5166.info
以深圳為例 數據放在 C:\dzh2\data\sz\day.dat
數據結構共分三個結構體:
1. 開始部分,存放一些全局數據的結構體(共24個字節)
由0x00 - 0x17開始
起止地址 數據內容 數據含義 數據類型
00 - 03 F4 9B 13 FC 日線文件標志 Integer
04 - 07 10 02 00 00 保留 Integer
08 - 0B 00 00 00 00 保留 Integer
0C - 0F D1 04 00 00 證券總數 Integer
10 - 13 81 0C 00 00 需添加之起始塊號 Integer 就是文件的最后,計算方法是 0x41000 + 這個數字 * 8192
14 - 17 48 0C 00 00 當前最后空塊號 Integer 最后一個空塊 方法同上,就是說寫數據,就在這個地方寫,寫完就在上面地方新增加新的塊
struct GLOBAL_DATA
{
int dayflag;
int reserve1;
int reserve2;
int stocksum;
int startblock;
int lastblock;
};
2. 存放后面具體數據的索引 (64個字節)
由0x18 - 0x58開始,總共有多少由0x0c提供.
從18h開始至40017h每64byte為一條股票數據分配記錄,含義下表18h - 57h所示
起止地址 數據內容 數據含義 數據類型
18 - 21 31 41 30 30 30...FF 證券代碼 Char[10]
22 - 25 B0 09 00 00 日線記錄數 Integer
26 - 57 16 00 17 00...FF FF 記錄塊號 Word[25]
struct INDEX_DATA
{
char code[10];
int dayrecordnum;
unsigned short int reocrd[25];
};
3. 具體數據的內容(32個字節)
0x41000開始
8192 = 256 * 32
從41000h開始每8KB為一股票數據存儲塊,每個股票數據存儲塊共存儲256條日線記錄,每一條記錄的長度為32 byte(含義如上表;上漲家數及下跌家數只對指數有效);
從41000h開始的8KB為第0號數據存儲塊,以后類推;
系統對每個股票日線數據存儲以存儲塊為單位進行分配。
日期字段的意義為:實際日期 = StrToDate(^1970-01-01^)+(日期字段 div 86400);即“日期字段”除以86400所得數為實際日期距1970年01月01日的天數。
對于c++來說直接用__time32_t類型直接出來就是日期(vs2005中,這個代表32位時間類型值,在vc6中直接用time_t即可【vc2005中time_t代表64位時間值】)
起止地址 數據內容 數據含義 數據類型
41000 - 41003 80 47 B2 2B 日期 Integer
41004 - 41007 B9 1E 25 41 開盤價 Single
41008 - 4100B CD CC 4C 41 最高價 Single
4100C - 4100F EC 51 18 41 最低價 Single
41010 - 41013 9A 99 41 41 收盤價 Single
41014 - 41017 80 06 B2 47 成交量 Single
41018 - 4101B 40 1C BC 4C 成交金額 Single
4101C - 4101D 00 00 上漲家數 Word
4101E - 4101F 00 00 下跌家數 Word
struct DAY_DATA
{
__time32_t date;
float open;
float high;
float low;
float close;
float amount;
float money;
unsigned short int rise;
unsigned short int fall;
};