一、通達(dá)信軟件系統(tǒng)目錄結(jié)構(gòu)┌ yxhj 運(yùn)行環(huán)境目錄,存放當(dāng)日行情數(shù)據(jù) ├ vip8 分析系統(tǒng)執(zhí)行程序和系統(tǒng)配置庫(kù) ├ block 系統(tǒng)板塊公用存盤文件 ├ doc 通達(dá)信文檔 │ ┌ fzline 分鐘 tdx 通達(dá)信 ┤ ├ lday 日線 │ ┌ sz 深圳 ┼ lwek 周線 │ │ └ lmon 月線 │ │ ┌ fzline 分鐘線 │ │ ├ lday 日線 └ vipdoc 歷史數(shù)據(jù) ┼ sh 上海 ┼ lwek 周線 │ └ lmon 月線 ├ sav6 v6版工作站信息 │ ┌ fzline 分鐘線 │ ├ lday 日線 ├ qh 期貨 ┼ lwek 周線 │ └ lmon 月線 ├ tick 歷史成交明細(xì) └ sav 跨越2000工作站信息 D:\Thirdprogram\new_gtja_qq\ ---------- root
├── Tc.exe ---------- 國(guó)泰君安銳智版網(wǎng)上交易V6.01交易程序
├── TdxW.exe ---------- 主程序
├── base.dbf ----------
├── incon.dat ---------- 風(fēng)格、概念、指數(shù)板塊代碼數(shù)據(jù)文件,用二進(jìn)制格式存儲(chǔ).板塊名稱和板塊代碼在D:\ThirdProgram\new_gtja_qq\incon.dat 定義。如:A|農(nóng)業(yè) A01|農(nóng)業(yè) A0101|種植業(yè)
├── common.props ---------- common.props
├── LICENSE ---------- LICENSE
├── Meowv.Blog.sln ---------- Solution
├── README.md ---------- README.md
├── .github ---------- github config
├── T0002\
│ ├── blocknew\ ---------- 板塊目錄
│ │ ├── blocknew.cfg ---------- 應(yīng)用服務(wù)緩存
│ │ └── zxg.blk ---------- 用于README.md展示圖片的圖片文件夾
│ ├── diary\ ---------- 投資日記
│ │ ├── sz\002930.idx ---------- 日記標(biāo)題
│ │ └── sz\002930.cnt---------- 日記內(nèi)容
│ ├── hq_cache\---------- 投資日記
│ │ ├── base.dbf ---------- 通達(dá)信基本財(cái)務(wù)數(shù)據(jù)(含總股本、流通股等);含地域板塊信息;
│ │ ├── block_fg.dat 風(fēng)格板塊
│ │ ├── block_gn.dat 概念板塊
│ │ ├── block_zs.dat 指數(shù)板塊
│ │ └── tdxhy.cfg 每個(gè)股票對(duì)應(yīng)通達(dá)信行業(yè)和申萬(wàn)行業(yè)
│ ├── vipdoc\---------- 歷史數(shù)據(jù)目錄,下載或緩存的歷史數(shù)據(jù)目錄
│ │ ├── sh │ │ │ ├── sh\lday\sh000001.day ---------- 上海日線K線數(shù)據(jù)
│ │ │ ├── sh\fzline\sh000001.lc5 ---------- 上海5分鐘線線數(shù)據(jù)
│ │ │ └── sh\minline\sh000001.lc1 ---------- 上海1分鐘線線數(shù)據(jù)
│ │ └── cw\---------- 通達(dá)信財(cái)務(wù)數(shù)據(jù)
│ │ ├── \vipdoc\cw\gpsh603093.dat y ---------- 通達(dá)信財(cái)務(wù)數(shù)據(jù)D:\new_tdx\vipdoc\cw\gpsh603093.dat
│ │ └── sh\minline\sh000001.lc1 ---------- 上海1分鐘線線數(shù)據(jù)
│ ├── tdxline.dat ---------- 畫線數(shù)據(jù)文件,T0002\tdxline.dat
│ ├── dlls\ ---------- 通達(dá)信DLL股票插件編程,存放自己開發(fā)的dll
│ ├── Meowv.Blog.Domain.Shared ---------- 領(lǐng)域?qū)?,一些常量,枚舉等
│ ├── Meowv.Blog.EntityFrameworkCore ---------- 集成EF Core,倉(cāng)儲(chǔ)接口實(shí)現(xiàn)
│ ├── Meowv.Blog.EntityFrameworkCore.DbMigrations ---------- EF Core數(shù)據(jù)庫(kù)遷移
│ ├── Meowv.Blog.HttpApi ---------- API控制器
│ ├── Meowv.Blog.HttpApi.Hosting ---------- WebApi項(xiàng)目,依賴于HttpApi,
│ ├── Meowv.Blog.Swagger ---------- Swagger擴(kuò)展、Filter
│ └── Meowv.Blog.ToolKits ---------- 公共的工具類、擴(kuò)展方法
├── incon.dat ---------- 板塊代碼數(shù)據(jù)文件,用二進(jìn)制格式存儲(chǔ).板塊名稱和板塊代碼在D:\ThirdProgram\new_gtja_qq\incon.dat 定義。如:A|農(nóng)業(yè) A01|農(nóng)業(yè) A0101|種植業(yè)
└── static ---------- 用于README.md展示圖片的圖片文件夾
T0002\diary\sz
通達(dá)信在主圖上用畫線工具A這個(gè)文字注釋工具做的文字注釋系統(tǒng)自動(dòng)保存在那個(gè)文件夾里: 1、畫線工具A這個(gè)文字注釋工具做的文字注釋系統(tǒng)自動(dòng)保存:都放在通達(dá)信軟件目錄:T0002\tdxline.dat這個(gè)文件里面。 2、ctrl+q文字注釋的內(nèi)容都放在T0002\mark.dat 通達(dá)信軟件設(shè)計(jì)的一些解釋http://fk./dispbbs.asp?boardid=19&Id=9523 vipdoc:下載或緩存的歷史數(shù)據(jù)目錄 diary:投資日志目錄 RemoteSH:緩存的上海F10 RemoteSZ:緩存的深圳F10 Ycinf緩存的公告消息 安裝目錄下的SZ.*,SH.*是緩存的盤中數(shù)據(jù)文件 T0002:個(gè)人信息目錄,內(nèi)有公式和自選股,個(gè)人設(shè)置等信息 Advhq.dat 星空?qǐng)D相關(guān)個(gè)性化數(shù)據(jù) Block.cfg 板塊設(shè)置文件 cbset.dat 籌碼分析個(gè)性化數(shù)據(jù) colwarn3.dat 行情欄目和預(yù)警個(gè)性化數(shù)據(jù) colwarnTj.dat 條件預(yù)警個(gè)性化數(shù)據(jù) CoolInfo.Txt 系統(tǒng)備忘錄 Line.dat 畫線工具數(shù)據(jù) MyFavZX.dat 資訊收藏夾數(shù)據(jù) newmodem.ini 交易客戶端個(gè)性化數(shù)據(jù) padinfo.dat 定制版面?zhèn)€性化數(shù)據(jù) PriCS.dat,PriGS.dat,PriText.dat 公式相關(guān)數(shù)據(jù) recentsearch.dat 最近資訊搜索數(shù)據(jù) Scheme.dat 配色方案 tmptdx.css 臨時(shí)網(wǎng)頁(yè)CSS文件 user.ini 全局個(gè)性化數(shù)據(jù) userfx.dat K線圖個(gè)性化數(shù)據(jù) [blocknew] 板塊目錄 [cache] 系統(tǒng)數(shù)據(jù)高速緩存 [zst_cache] 分時(shí)圖數(shù)據(jù)高速緩存 [coolinfo] 系統(tǒng)備忘錄目錄 [Invest] 個(gè)人理財(cái)數(shù)據(jù)目錄 SUPERSTK下的文件:SYS.DTA 存放系統(tǒng)提供的公式; USERDATA下的文件:AUTOBLK.CFG:自動(dòng)板塊設(shè)定;SELF.DTA 存放用戶自編的公式; BLOCK文件夾下的文件: *.IBK 板塊指數(shù)定義;*.BLK 板塊定義;*.EBK 條件選股結(jié)果; SELF 文件夾下的文件: *.WSV 保存頁(yè)面文件;ALERT.DAT 歷史預(yù)警紀(jì)錄;EXTDATA.INF 擴(kuò)展數(shù)據(jù)定義; *.CEP 保存組合條件選股條件;TEMPCMPD.CEP測(cè)試附加條件;*.INV 用戶個(gè)人投 資紀(jì)錄;*.TPT 保存指標(biāo)模板;SELF年月日.DTA 每日自動(dòng)公式備份文件; TEST 文件夾下的文件: *.TST 存放系統(tǒng)測(cè)試結(jié)果;*.OPT 存放參數(shù)優(yōu)化的結(jié)果; PARAM參數(shù)指引文件夾: *.PRM 存放參數(shù)指引的結(jié)果; TABLE文件夾下的文件:*.ESS數(shù)據(jù)表文件;*.ESD數(shù)據(jù)表文件(帶數(shù)據(jù)保存); SelfData文件夾下的文件:*.str 字符串?dāng)?shù)據(jù);*.oth 與股票無(wú)關(guān)序列值數(shù)據(jù); Pattern 文件夾下的文件: *.PIN 模式匹配設(shè)計(jì);*.PWT模式匹配方法; SpotAna文件夾下的文件: *.SPT 定位分析結(jié)果; Relate文件夾下的文件: *.RTL 相關(guān)分析結(jié)果; Posible文件夾下的文件: *.PSB 預(yù)測(cè)分布設(shè)計(jì); DATA件夾下的文件: DAY.DAT 日線數(shù)據(jù);EXTDAY.DAT 擴(kuò)展數(shù)據(jù);MIN.DAT 5分鐘線數(shù)據(jù);REPORT.DAT 當(dāng)天的分筆成交數(shù)據(jù);STKINFO.DAT 代碼表/即時(shí)行情數(shù)據(jù)/財(cái)務(wù)數(shù)據(jù)/除權(quán)數(shù)據(jù);*.PRP 歷史回憶數(shù)據(jù),一天一個(gè)文件; NEWS文件夾下的文件:*.TXT 財(cái)經(jīng)報(bào)道、上交所公告、深交所公告 通達(dá)信小常識(shí): 1. 自選股放在通達(dá)信軟件 \T0002\blocknew/zxg.blk 文件中目錄下 2. 通達(dá)信備份可用通達(dá)信自身工具數(shù)據(jù)維護(hù)工具自己備份:工具欄選 系統(tǒng)——數(shù)據(jù)維護(hù)工具 (許多使用通達(dá)信的朋友不能 下載5分鐘數(shù)據(jù)了,實(shí)際上股軟并沒有出現(xiàn)問題,只是原有的數(shù)據(jù)已滿,將tdx\vipdoc\sh\fzline,tdx\vipdoc\sz\fzline, 將兩個(gè)文件原有的數(shù)據(jù)清空(刪除)后就可以繼續(xù)下載了),各種版本的通達(dá)信股軟,新下載安裝的由于【fzline】沒有分時(shí) 數(shù)據(jù)的記錄,可以隨時(shí)下載5分鐘數(shù)據(jù). 目錄 通達(dá)信日K線.day、5分鐘.rc5、1分鐘.rc1歷史數(shù)據(jù)格式 一、日K線數(shù)據(jù)格式 下載安裝通達(dá)信軟件后,打開“系統(tǒng)”菜單,找到“盤后數(shù)據(jù)下載”選型,可下載日線.day、5分鐘.rc5、1分鐘.rc1歷史數(shù)據(jù)。 如:日線數(shù)據(jù)下載后,存放位置在安裝目錄\vipdoc\sh\lday下(上證數(shù)據(jù))和安裝目錄\vipdoc\sz\lday下(深證數(shù)據(jù)),每個(gè)股票對(duì)應(yīng)一個(gè)文件。通達(dá)信的日線數(shù)據(jù)格式如下:每32個(gè)字節(jié)為一天數(shù)據(jù)每4個(gè)字節(jié)為一個(gè)字段,每個(gè)字段內(nèi)低字節(jié)在前。 (一)通達(dá)信日線數(shù)據(jù)格式00 ~ 03 字節(jié) 年月日,整型;
04 ~ 07 字節(jié) 開盤價(jià)*100,整型;
08 ~ 11 字節(jié) 最高價(jià)*100, 整型;
12 ~ 15 字節(jié) 最低價(jià)*100, 整型;
16 ~ 19 字節(jié) 收盤價(jià)*100, 整型;
20 ~ 23 字節(jié) 成交額(元),float型;
24 ~ 27 字節(jié) 成交量(股),整型;
28 ~ 31 字節(jié) (保留)
(二) 通達(dá)信5分鐘、1分鐘數(shù)據(jù)格式 00 ~ 01 字節(jié) 日期,整型;計(jì)算方法為:year = floor(num/2048) + 2004; month = floor(mod(num,2048)/100); day = mod(mod(num,2048), 100); 02 ~ 03 字節(jié) 0點(diǎn)至目前的分鐘數(shù),整型 04 ~ 07 字節(jié) 開盤價(jià)*100,整型 08 ~ 11 字節(jié) 最高價(jià)*100,整型 12 ~ 15 字節(jié) 最低價(jià)*100,整型 16 ~ 19 字節(jié) 收盤價(jià)*100,整型 20 ~ 23 字節(jié) 成交額*100,float型 24 ~ 27 字節(jié) 成交量(股),整型 28 ~ 31 字節(jié) (保留) c++ struct TdxRecord { // 日K線數(shù)據(jù)結(jié)構(gòu)
unsigned int date; // e.g. 20100304
int _open; // *0.01 開盤價(jià)
int _high; // *0.01 最高價(jià)
int _low; // *0.01 最低價(jià)
int _close; // *0.01 收盤價(jià)
float amount; // 成交額
int vol; // 成交量(手)
int reserved;
float open(){ return 0.01*_open; }
float high(){ return 0.01*_high; }
float low(){ return _low*0.01; }
float close(){ return _close*0.01; }
};
Python實(shí)現(xiàn)批量解析通達(dá)信day文件,導(dǎo)出至CSV Python import os
import struct
import datetime
def stock_csv(filepath, name):
data = [] with open(filepath, 'rb') as f:
file_object_path = 'D:/通達(dá)信/vipdoc/sh/pythondata/' + name +'.csv'
file_object = open(file_object_path, 'w+')
while True:
stock_date = f.read(4)
stock_open = f.read(4)
stock_high = f.read(4)
stock_low= f.read(4)
stock_close = f.read(4)
stock_amount = f.read(4)
stock_vol = f.read(4)
stock_reservation = f.read(4) # date,open,high,low,close,amount,vol,reservation
if not stock_date:
break
# 4字節(jié)如20091229
stock_date = struct.unpack("l", stock_date)
#開盤價(jià)*100
stock_open = struct.unpack("l", stock_open)
#最高價(jià)*100
stock_high = struct.unpack("l", stock_high)
#最低價(jià)*100
stock_low= struct.unpack("l", stock_low)
#收盤價(jià)*100
stock_close = struct.unpack("l", stock_close)
#成交額
stock_amount = struct.unpack("f", stock_amount)
#成交量
stock_vol = struct.unpack("l", stock_vol)
#保留值
stock_reservation = struct.unpack("l", stock_reservation)
#格式化日期
date_format = datetime.datetime.strptime(str(stock_date[0]),'%Y%M%d')
list= date_format.strftime('%Y-%M-%d')+ "," + str(stock_open[0]/100)+","
+str(stock_high[0]/100.0) +"," +str(stock_low[0]/100.0)+","
+ str(stock_close[0]/100.0)+"," + str(stock_vol[0])+"\r\n"
file_object.writelines(list)
file_object.close()
path = 'D:/通達(dá)信/vipdoc/sh/lday/'
listfile = os.listdir('D:/通達(dá)信/vipdoc/sh/lday/')
for i in listfile:
stock_csv(path+i, i[:-4])
日記文件數(shù)據(jù)格式 struct TdxDiary_Idx {
int id; // 0xffffffff = deleted, auto incr
char dummy1; // = 0x00
char symbol[7]; // 7 char = 6 char symbol + 1 char '\0'
int date; // 20110407
int time; // 13:14:25 = 131425
int weather; // 00 = 晴, 01=陰, 02=雨, 03=雪
char title[64]; // title
int offset; // offset in "symbol.cnt"
int length; // content length
int date2; // date2 = date
int time2; // time2 = time
void set(const char *symbol, const char *title, int offset, int length){
memset(this->symbol, '\0', 7);
memset(this->title, '\0', 64);
this->dummy1 = '\0';
this->weather=0x03;
strcpy(this->symbol, symbol);
strcpy(this->title, title);
this->offset = offset;
this->length = length;
}
void datetime(int date, int time){
this->date = date; this->time = time;
this->date2 = date; this->time2 = time;
}
};
c# 讀寫通達(dá)信日記文件 E:\thirdprogram\國(guó)泰君安銳智版\T0002\diary\sh\600732.idx 該文件只保留了文件標(biāo)題信息 文件內(nèi)容在600732.cnt中 /// <summary>
///功能:讀寫通達(dá)信日記文件 E:\thirdprogram\國(guó)泰君安銳智版\T0002\diary\sh\600732.idx 該文件只保留了文件標(biāo)題信息 文件內(nèi)容在600732.cnt中
/// </summary>
public class TdxDiaryFileRecordStruct
{
//E:\thirdprogram\國(guó)泰君安銳智版\T0002\diary\sh\600732.idx
//該文件只保留了文件標(biāo)題信息
//文件內(nèi)容在600732.cnt中
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct DiaryFileRecordStruct //RecordSize= 104,其他數(shù)字為第幾次日記,包括修改
{
[MarshalAs(UnmanagedType.I4)] //4byte FF FF FF FF 或08 00 00 00 如果是0XFF FF FF FF則表示記錄作廢 其他為第幾次
public Int32 ValidLable;
[MarshalAs(UnmanagedType.I1)] //1byte 01
public byte Unknow1;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 7)] //6byte 36 30 30 30 30 30
public string StockCode;
[MarshalAs(UnmanagedType.I4)] //,K線日期日期 B7 DE 32 01
public Int32 KLineLableDate;
[MarshalAs(UnmanagedType.I4)] //,K線時(shí)間 49 36 03 00
public Int32 KlineLableTime;
[MarshalAs(UnmanagedType.I4)] //,4 byte 未知 00 00 00 00
public Int32 Unknow3;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] //64 byte 文本內(nèi)容
public string DiaryTitle;
[MarshalAs(UnmanagedType.I4)] //文本內(nèi)容在600732.cnt 中的偏移字節(jié)數(shù) 91 01 00 00
public Int32 CntFileOffsetPostion;
[MarshalAs(UnmanagedType.I4)] // 文本內(nèi)容在600732.cnt 中的字節(jié)數(shù)長(zhǎng)度09 00 00 00
public Int32 CntFileLength;
[MarshalAs(UnmanagedType.I4)] //,最后修改日期20111031 B4 DE 32 01
public Int32 UpdateDate;
[MarshalAs(UnmanagedType.I4)] //,最后修改時(shí)間200604=20:06:04 49 36 03 00
public Int32 UpdateTime;
}
}
股票代碼和名稱數(shù)據(jù)格式
struct TdxSymbolMap {
char symbol[6]; // 6 digits
char dummy1[18]
char name[8]; // 4 characters in GB2312
char dummy2[218];
}
read
void tdx_read_symbols(const char *file){
FILE *fp=fopen(file.c_str(),"rb");
fseek(fp, 50, SEEK_SET);
char buf[250];
while(250 == fread(buf,1,250,fp)){
std::string symbol(buf,0,6);
std::string name(buf+24,8);
}
fclose(fp);
}
通達(dá)信股票代碼數(shù)據(jù)格式 文件位置 從通達(dá)信系統(tǒng)獲取股票代碼信息 通達(dá)信系統(tǒng)股票代碼信息保存在安裝目錄下T0002\hq_cache子目錄 文件名分別為shm.tnf、szm.tnf 輸出結(jié)果:pandas DateFrame 列名含義: sc:市場(chǎng)代碼,sh滬市,sz深市 gpdm:股票代碼(9位),如002294.SZ,索引 gpmc:股票名稱,如信立泰 gppy:股票拼音,如XLT gplb:股票類別,如深市中小板A股 概念板塊數(shù)據(jù)結(jié)構(gòu)概念板塊數(shù)據(jù)結(jié)構(gòu)
文件存儲(chǔ)路徑:tdx\T0002\hq_cache\block.dat
文件存儲(chǔ)格式:
文件頭:384字節(jié)
板塊個(gè)數(shù):2字節(jié)
各板塊數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)(緊跟板塊數(shù)目依次存放)
每個(gè)板塊占據(jù)的存儲(chǔ)空間為2812個(gè)字節(jié),可最多包含399個(gè)個(gè)股
板塊名稱:9字節(jié)
該板塊包含的個(gè)股個(gè)數(shù):2字節(jié)
板塊類別:2字節(jié)
該板塊下個(gè)股代碼列表(連續(xù)存放,直到代碼為空)
個(gè)股代碼:7字節(jié)
tdx\T0002\hq_cache\block.dat:
typedef struct _TDXBLOCKDATAFILEHEADER
{
union
{
char Header[0x182];
};
}TDXBLOCKDATAFILEHEADER,*PTDXBLOCKDATAFILEHEADER;
typedef struct _TDXBLOCKDATA
{
char BlockName[9];
unsigned short int Num;
unsigned short int Data1;
char CodeName[400][7];
} TDXBLOCKDATA,*PTDXBLOCKDATA;
typedef struct _TDXBLOCKDATFILE
{
TDXBLOCKDATAFILEHEADER Header;
TDXBLOCKDATA Block[n];
}TDXBLOCKDATFILE,*PTDXBLOCKDATFILE;
自定義板塊存儲(chǔ)數(shù)據(jù)結(jié)自定義板塊存儲(chǔ)數(shù)據(jù)結(jié)
板塊名稱文件:\tdx\T0002\block.cfg
存儲(chǔ)結(jié)構(gòu):
空白:4字節(jié)
板塊名稱:10字節(jié)字符串
板塊簡(jiǎn)碼:5字節(jié)字符串
自定義的各板塊個(gè)股存儲(chǔ)
文件名:tdx\T0002\blocknew\ + 自定義板塊簡(jiǎn)碼(與block.cfg文件中的各板塊簡(jiǎn)碼同)
數(shù)據(jù)存儲(chǔ)結(jié)構(gòu):
個(gè)股分隔符:2字節(jié)
個(gè)股屬性代碼:1字節(jié)(1:表示上證;0:表示深證)
個(gè)股名稱:6字節(jié)
自選股票T0002\blocknew\ZXG.blk
通達(dá)信基本財(cái)務(wù)數(shù)據(jù)結(jié)構(gòu)1.D:\Thirdprogram\new_gtja_qq\T0002\hq_cache\base.dbf 2. / 通達(dá)信格式財(cái)務(wù)數(shù)據(jù)
#define TDX_FHEADER_SIZE 0x521
typedef struct tdx_basedata_t {
char m_szMagic;
char m_szMarket; // 市場(chǎng) '0' 深圳 '1' 上海
char m_szCode[6];
char m_szDate_modified[8]; // 更新日期
char m_szShare_count_total[14]; // 總股本 10000
char m_szShare_count_national[14]; // 國(guó)家股 10000
char m_szShare_count_orig[14]; // 發(fā)起股 10000
char m_szShare_count_corp[14]; // 法人股 10000
char m_szShare_count_b[14]; // B股 10000
char m_szShare_count_h[14]; // H股 10000
char m_szShare_count_currency[14]; // 流通股 10000
char m_szShare_count_employ[14]; // 職工股 10000
char m_szUnkown1[14]; //
char m_szAsset[14]; // 總資產(chǎn) 1000
char m_szAsset_currency[14]; // 流動(dòng)資產(chǎn) 1000
char m_szAsset_capital[14]; // 固定資產(chǎn) 1000
char m_szAsset_imma[14]; // 無(wú)形資產(chǎn) 1000
char m_szInvest_long[14]; // 長(zhǎng)期投資 1000
char m_szDebt_currency[14]; // 流動(dòng)負(fù)債 1000
char m_szDebt_long[14]; // 長(zhǎng)期負(fù)債 1000
char m_szAcc_fund[14]; // 公積金 1000
char m_szNet_asset[14]; // 凈資產(chǎn) 1000
char m_szMain_income[14]; // 主營(yíng)收入 1000
char m_szMain_profit[14]; // 主營(yíng)利益 1000
char m_szOther_profit[14]; // 其他利益 1000
char m_szBusiness_profit[14]; // 營(yíng)業(yè)利益 1000
char m_szInvest_profit[14]; // 投資收益 1000
char m_szAllow_profit[14]; // 補(bǔ)貼收入 1000
char m_szOut_profit[14]; // 業(yè)外收支 1000
char m_szProfit_regulate[14]; // 損益調(diào)整 1000
char m_szTotal_profit[14]; // 利潤(rùn)總額 1000
char m_szProfit_aftertax[14]; // 稅后利益 1000
char m_szNet_profit[14]; // 凈利益 1000
char m_szProfit_ud[14]; // 未分利潤(rùn) 1000
char m_szNet_asset_ps_regulate[14]; // 每股凈資2
char m_szUnknown2[3]; //
char m_szUnknown3[4]; //
char m_szUnknown4[2]; //
char m_szDate_begin[8]; // 上市日期
char m_szUnknown5[3]; //
char m_szUnknown6[11]; //
}TDX_BASEDATA, *PTDX_BASEDATA;
3. //數(shù)據(jù)管理-通達(dá)信財(cái)務(wù)數(shù)據(jù)導(dǎo)入-選擇文件-通達(dá)信財(cái)務(wù)板塊數(shù)據(jù)導(dǎo)入
int CSelfDB::InstallBasetableTdx(const char * filename)
{
if (NULL == filename || strlen(filename) == 0)
return 0;
int nCount = 0;
CSPString sRoot = GetRootPath();
CSPString sFileNameSHSZ = sRoot + self_chna_basetbl;
CSPFile fileSHSZ, fileTdx;
if (fileSHSZ.Open(sFileNameSHSZ, CSPFile::modeWrite | CSPFile::modeCreate)
&& fileTdx.Open(filename, CSPFile::modeRead))
{
fileTdx.Seek(TDX_FHEADER_SIZE, CSPFile::begin);
TDX_BASEDATA tdxblock;
while(sizeof(tdxblock) == fileTdx.Read(&tdxblock, sizeof(tdxblock)))
{
BASEDATA block;
if (convert_TDX_BASEDATA_to_BASEDATA(&tdxblock, &block))
{
fileSHSZ.Write(&block, sizeof(block));
nCount ++;
}
}
}
return nCount;
}
|