同花顺的数据格式总览(转帖)
原文:http://enterprisebeing.spaces.live.com/Blog/cns!1D3811D0695B6887!172.entry
同花順采用了簡易的數據庫組織方式。在同花順的發布文件包中包括了SQLite 3的驅動,但不是很清楚同花順是如何使用這個驅動的。基本上,對同花順數據結構的解析不需要這么復雜,同花順發布文件包中的SQLite文件被核新程序員重新編譯過,不過就與SQLite Manager的簡單配合使用來看,并不影響對標準數據庫文件的讀取,當然,也不支持把同花順數據文件當成標準的數據庫文件進行讀取。
基本上,同花順的數據文件可以分為兩類,一類是history\下行情數據文件,另一類是finance\下財務數據文件。
在history\下的數據文件,通過子目錄名稱識別市場代碼,通過子目錄下的文件名稱識別交易標的(包括股票、期貨等等)。文件格式采用的是簡單格式,每個數據文件分別由:
- 文件頭;
- 列定義;
- 內容;
三個部分組成。
在finance\下的數據文件,采用的是單文件容納所有品種數據的方式,因此采用的是復合格式,每個數據文件分別由:
- 文件頭;
- 列定義;
- 填充區域;
- 復合索引數據塊;
- 內容;
五個部分組成。
文件頭
文件頭固定為16個字節,包括:
- byte [6],6 字節長度,固定為 {0x68,0x64,0x31,0x2E, 0x30,0x00},用于識別數據文件類型;
- dword,4 字節長度,記錄“內容”區域的記錄條數;
- word,2 字節長度,記錄“內容”區域的開始位置;
- word,2 字節長度,記錄“內容”區域每條記錄的字節長度;
- word,2字節長度,記錄“列定義”的列個數;
列定義
列定義固定為4 個字節一組,標示一個列,第4 個字節為列內容的字節長度,由于是使用1 個字節表示,因此數據文件每列的最大長度為255個字節。
填充區域
在finance\目錄下的數據文件,采用的是包括索引的復合格式存儲。在列定義和符合索引數據塊之間存在著一個未使用的填充區域,填充區域的長度總是列定義數量的兩倍,即文件頭偏移 0x0E 處 WORD 類型 * 2。
就目前所知,這一區域基本上都使用 0x00 填充,可能是保留未來使用。
復合索引數據塊
在finance\目錄下的數據文件,文件的“內容”區域并不包含記錄所隸屬的證券品種,而是把此內容放置在一個單獨的索引區域。索引區的開始位置 = 0x10 + 0x04 * 列定義數量 + 0x02 * 列定義數量。
復合索引數據塊由三個部分組成:
- word,2 個字節,記錄本索引數據區域的字節長度;
- word,2 個字節,記錄本索引數據區域中所包含的索引的條數;
- byte[],不定長的索引記錄,每條索引記錄為18個字節長度,因此總長度 = 索引條數 * 0x12;
索引
每條索引的長度為18個字節,格式分別為:
- byte,1 字節長度,標識證券品種類型,目前已知的包括3 類4 種標示,分別是:0x10,國內證券;0x48和0x50,港股;0x4A,基金。在“權息資料”中,使用0x50標示港股,在“現金流量”中,使用0x48標示港股,不知道是設計的 bug,還是存在其他用意;
- byte [9],9 字節長度,標識交易品種的符號,目前已知是ASCII格式,從整個文件的多字節字符處理來看,文件的整體字符編碼應該是GB2312編碼,因此這一部分原始的處理應該是使用GB2312編碼通讀;
- word,2 字節長度,標識隸屬此交易品種的記錄區域中實際上未使用的記錄條數,有關的組織方式下面再詳細解釋;
- dword,4 字節長度,標識隸屬于此交易品種的記錄的開始下標,注意是記錄在數據文件中從0 開始排列的順序號,而不是文件的偏移地址,其實際的偏移地址 = “內容”區域的開始地址 + 此開始下標 * 記錄的長度;
- word,2 個字節長度,標識隸屬于此交易品種的記錄的條數;
總體來說,存在索引的文件其實際的完整數據由兩個部分組成,一個就是索引數據區,另一個就是記錄內容數據區。其與索引對應的記錄內容數據采取分塊的存儲模式,即,每一個交易品種總是使用一個固定的、連續的內容數據區存儲相對應的數據,因此在實際的數據存儲過程中,存在著并未被實際使用的“空余”記錄的數據區。
復合文件通過兩個方法來識別有效和無效的記錄,首先,索引記錄其所使用的數據區總容納的記錄條數和未被使用的、無效的記錄條數,兩者相減可知被實際使用的記錄條數;其次,復合文件的記錄總是使用一個類型為Int32的4 字節用于標識時間的列開始,如果這個列的值為<=0,則表明這是無效的數據記錄。
內容
數據內容開始的地址偏移在文件頭0x0A處的一個word類型的2字節數據指示,其有效長度 = 列長度 * 記錄條數。
?
附錄
同花順的數據文件讀取器和支持類庫在 https://sourceforge.net/projects/ociathena/
轉載于:https://www.cnblogs.com/limitplus/archive/2010/04/09/1708033.html
總結
以上是生活随笔為你收集整理的同花顺的数据格式总览(转帖)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的是谁唱的啊?
- 下一篇: DotNet关键知识点——WCF篇(六)