QianLong.h
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:10k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. /*
  2. Cross Platform Core Code.
  3. Copyright(R) 2001-2002 Balang Software.
  4. All rights reserved.
  5. Using:
  6. class CQianLong;
  7. */
  8. #if !defined( __STKLIB_QIANLONG_H__ )
  9. #define __STKLIB_QIANLONG_H__
  10. #include "StdAfx.h"
  11. #include "../Include/Stock.h"
  12. #include "../Include/Database.h"
  13. // 钱龙网络版动态数据格式(即ml30londdat下的数据格式)
  14. // Set the default value
  15. #define EXCH_MIN 240
  16. #define EXCH_A 9*60+30
  17. #define EXCH_AE 11*60+30
  18. #define EXCH_B 13*60+00
  19. #define EXCH_BE 15*60+00
  20. #define SEP_TAG 0xffffffff
  21. #define TRA_MAXN 1000
  22. #define INFO_PARA 0x84
  23. #define TYPE_NUM 0x4
  24. #define SLHS_SIZE 0x300
  25. #define SH_ZS 'a'
  26. #define SH_AG 'b'
  27. #define SH_BG 'c'
  28. #define SH_ZQ 'd'
  29. #define SZ_ZS 'A'
  30. #define SZ_AG 'B'
  31. #define SZ_BG 'C'
  32. #define SZ_ZQ 'D'
  33. #define DH_ZS 0x10
  34. #define DH_AG 0x11
  35. #define DH_BG 0x12
  36. #define DH_ZQ 0x13
  37. #define DZ_ZS 0x20
  38. #define DZ_AG 0x21
  39. #define DZ_BG 0x22
  40. #define DZ_ZQ 0x23
  41. #pragma pack(1)
  42. struct QL_APD_stock_data{ // in 199YMMDD.DAT
  43. BYTE data_id; // =0x73 with min_data ,
  44. // =0x09 without min_data ,
  45. // =0x20 is deleted
  46. BYTE stock_type; // many be a,b,c,d or A,B,C,D
  47. BYTE stock_code[6]; // stock code
  48. BYTE stock_name[8]; // name of the stock
  49. DWORD last_close_price;
  50. DWORD open_price;
  51. DWORD high_price;
  52. DWORD low_price;
  53. DWORD close_price;
  54. DWORD total_volume;
  55. DWORD total_value;
  56. };
  57. struct QL_APD_stock_min{ // store data for normal shares
  58. DWORD cur_price; // price of every minutes
  59. DWORD total_volume; // summary volume by this minute
  60. WORD average_percent; // swing percent of the average value
  61. };
  62. struct QL_APD_index_min{ // store data for index
  63. DWORD cur_price; // index of every minutes
  64. DWORD total_volume; // summary volume by this minute
  65. WORD average_percent; // swing percent of the average index
  66. WORD buy_vigour; // the vigour value of buying
  67. WORD sell_vigour; // the vigour value of selling
  68. };
  69. // Develop data files by appdata structured upwards
  70. struct QL_Data_5min{ // in .nmn files
  71. DWORD min_off; // Format is MMDDHHMM
  72. DWORD open_price; // 0.001
  73. DWORD high_price; // 0.001
  74. DWORD low_price; // 0.001
  75. DWORD close_price; // 0.001
  76. DWORD min_amount; // 100
  77. DWORD min_volume; // 100
  78. DWORD time_count; // sum trade time
  79. BYTE share_value; // share value
  80. BYTE share_number; // share break number
  81. WORD share_bonus; // share bonus
  82. DWORD shares_number; // sum number
  83. };
  84. struct QL_His_data{ // in lonhis.???
  85. DWORD cur_price;
  86. DWORD total_volume; // total volume
  87. DWORD total_value; // total value by this minute
  88. DWORD buy_volume; // initiactive total buy volume
  89. DWORD sell_volume; // initiactive total sell volume
  90. WORD rise_num; // summary rise shares of this minute
  91. WORD fall_num; // summary fall shares of this minute
  92. WORD average_percent; // swing percent of the average index
  93. WORD buy_vigour; // the vigour value of buying
  94. WORD sell_vigour; // the vigour value of selling
  95. WORD value_ADL; // the value of current ADL index
  96. WORD swing_flag; // the flag of rise or fall
  97. };
  98. struct QL_Tra_data{ // in lontra.???
  99. WORD time_off;
  100. DWORD cur_price;
  101. DWORD total_vol;
  102. DWORD buy_price;
  103. DWORD sell_price;
  104. };
  105. struct QL_Info_data{ // in loninfo.???
  106. BYTE stock_id; // This byte is to id stock
  107. BYTE data_tag; // always be 0 to id
  108. WORD stock_num;
  109. WORD start_num;
  110. WORD max_tra;
  111. WORD min_exch;
  112. WORD exch_min;
  113. WORD A_begin_time;
  114. WORD A_end_time;
  115. WORD B_begin_time;
  116. WORD B_end_time;
  117. };
  118. struct QL_Cdp_data{ // shacdp.dat of HXTW
  119. BYTE stock_code[6];
  120. BYTE reserved[20];
  121. DWORD reserved2;
  122. };
  123. // some dynamic data files structured upwards
  124. struct QL_Data_day{ // in .day files
  125. DWORD day_date; //日期 Format is XXMMDDHHMM for 5min, Format is YYYYMMDD for day
  126. DWORD open_price; // 开盘 0.001
  127. DWORD high_price; // 最高价 0.001
  128. DWORD low_price; // 最低价 0.001
  129. DWORD close_price; // 收盘 0.001
  130. DWORD day_amount; // 成交额(千元) 1000
  131. DWORD day_volume; // 成交量(手) 100
  132. DWORD time_count; // sum trade time
  133. BYTE share_value; // share value
  134. BYTE share_number; // share break number
  135. WORD share_bonus; // share bonus
  136. DWORD shares_number; // sum number
  137. };
  138. struct QL_Stock_info_V302{ // in lonnow.??? of QL302S
  139. BYTE data_id; // =0 is OK , =0xff is deleted
  140. BYTE stock_name[8];
  141. BYTE stock_type;
  142. BYTE stock_code[6];
  143. DWORD last_close_price;
  144. DWORD open_price;
  145. DWORD high_price;
  146. DWORD low_price;
  147. DWORD close_price;
  148. DWORD total_volume;
  149. DWORD total_value;
  150. DWORD buy_1_price;
  151. DWORD buy_1_volume;
  152. DWORD buy_2_price;
  153. DWORD buy_2_volume;
  154. DWORD buy_3_price;
  155. DWORD buy_3_volume;
  156. DWORD sell_1_price;
  157. DWORD sell_1_volume;
  158. DWORD sell_2_price;
  159. DWORD sell_2_volume;
  160. DWORD sell_3_price;
  161. DWORD sell_3_volume;
  162. WORD reserved; // Most time is 0x0064
  163. };
  164. struct QL_Stock_info2_V304{ // in lonnow.??? of QL304S
  165. BYTE data_id; // =0 is OK , =0xff is deleted
  166. BYTE stock_name[8];
  167. BYTE stock_type;
  168. BYTE stock_code[6];
  169. DWORD last_close_price;
  170. DWORD open_price;
  171. DWORD high_price;
  172. DWORD low_price;
  173. DWORD close_price;
  174. DWORD total_volume;
  175. DWORD total_value;
  176. DWORD buy_1_price;
  177. DWORD buy_1_volume;
  178. DWORD buy_2_price;
  179. DWORD buy_2_volume;
  180. DWORD buy_3_price;
  181. DWORD buy_3_volume;
  182. DWORD sell_1_price;
  183. DWORD sell_1_volume;
  184. DWORD sell_2_price;
  185. DWORD sell_2_volume;
  186. DWORD sell_3_price;
  187. DWORD sell_3_volume;
  188. WORD reserved; // Most time is 0x0064
  189. DWORD reserved2; // Maybe the PINYIN
  190. };
  191. struct QL_Sse_data{ // in sse20a.dat,sse21a.dat,sse22a.dat
  192. BYTE data_id; // 0x30,0x31,0x32
  193. BYTE stock_code[6];
  194. BYTE stock_name[8];
  195. BYTE stock_type1; // 0x30 or 0x31
  196. BYTE stock_type2; // 00 or 01
  197. BYTE reserved; // =0
  198. };
  199. struct QL_Name_table{ // in nametbl.*
  200. BYTE data_id; // 0x10...
  201. BYTE stock_code[6];
  202. BYTE stock_name[8];
  203. BYTE data_tag;
  204. };
  205. #pragma pack()
  206. /*
  207. void display_version(char*);
  208. void check_config_file(char*);
  209. void display_helpinfo(void);
  210. void prepair_data(void);
  211. void appdata_error(WORD,char*,char*,char*);
  212. void check_anlysis_system(void);
  213. void removetmpfiles(void);
  214. void process_apdfile(char*);
  215. int detect_apdfile(char*,char*,char*);
  216. void clear_slonhsrec(struct Slon_HS);
  217. */
  218. BOOL convert_QL_Data_5min_to_KDATA( DWORD dwMarket, const char *szCode, struct QL_Data_5min * pqlkd, KDATA *pkd );
  219. BOOL convert_QL_Data_day_to_KDATA( DWORD dwMarket, const char *szCode, struct QL_Data_day * pqlkd, KDATA *pkd );
  220. BOOL convert_KDATA_to_QL_Data_day( KDATA * pkd, struct QL_Data_day * pqlkd );
  221. BOOL convert_KDATA_to_QL_Data_5min( KDATA * pkd, struct QL_Data_5min * pqlkd );
  222. void ConvertQLStockInfo( DWORD dwMarket, QL_Stock_info_V302 & block, CStockInfo *pInfo );
  223. void ConvertQLStockInfo( DWORD dwMarket, QL_Stock_info2_V304 & block, CStockInfo *pInfo );
  224. #define QL_SHORTNAME_LEN 4
  225. /***
  226. 钱龙数据格式的读取类。
  227. */
  228. class CQianlong : public IStStore
  229. {
  230. public:
  231. CQianlong( const char * rootpath, BOOL bOK = TRUE );
  232. virtual ~CQianlong( );
  233. enum QL_Version {
  234. versionUnknown = 0x01,
  235. version302 = 0x02,
  236. version304 = 0x03,
  237. };
  238. virtual int GetMaxStockNumber( );
  239. virtual int LoadCodetable( CStockContainer & container );
  240. virtual int StoreCodetable( CStockContainer & container );
  241. virtual int LoadKDataCache( CStockContainer & container, PROGRESS_CALLBACK fnCallback, void *cookie, int nProgStart, int nProgEnd );
  242. virtual int LoadBasetable( CStockContainer & container );
  243. virtual int StoreBasetable( CStockContainer & container );
  244. virtual int LoadBaseText( CStock *pstock );
  245. virtual int LoadKData( CStock *pstock, int nKType );
  246. virtual int LoadDRData( CStock *pstock );
  247. virtual int StoreDRData( CStock *pstock );
  248. virtual int LoadReport( CStock *pstock );
  249. virtual int LoadMinute( CStock *pstock );
  250. virtual int LoadOutline( CStock *pstock );
  251. virtual int StoreReport( REPORT * pReport, int nCount, BOOL bBigTrade );
  252. virtual int StoreMinute( MINUTE * pMinute, int nCount );
  253. virtual int StoreOutline( OUTLINE * pOutline, int nCount );
  254. virtual int InstallCodetbl( const char * filename, const char *orgname );
  255. virtual int InstallCodetblBlock( const char * filename, const char *orgname );
  256. virtual int InstallCodetblFxjBlock( const char * filename, const char *orgname );
  257. virtual int InstallKData( CKData & kdata, BOOL bOverwrite = FALSE );
  258. virtual int InstallKDataTy( const char * stkfile, int nKType, PROGRESS_CALLBACK fnCallback, void *cookie );
  259. virtual int InstallKDataFxj( const char * dadfile, int nKType, PROGRESS_CALLBACK fnCallback, void *cookie );
  260. virtual int InstallDRData( CDRData & drdata );
  261. virtual int InstallDRDataClk( const char * filename, const char *orgname );
  262. virtual int InstallDRDataFxj( const char * fxjfilename );
  263. virtual int InstallBasetable( const char * filename, const char *orgname );
  264. virtual int InstallBasetableTdx( const char * filename );
  265. virtual int InstallBasetableFxj( const char * filename );
  266. virtual int InstallBaseText( const char * filename, const char *orgname );
  267. virtual int InstallBaseText( const char * buffer, int nLen, const char *orgname );
  268. virtual int InstallNewsText( const char * filename, const char *orgname );
  269. virtual int InstallNewsText( const char * buffer, int nLen, const char *orgname );
  270. virtual BOOL GetFileName( CSPString &sFileName, int nDataType,
  271. CStockInfo * pInfo = NULL, int nKType = CKData::ktypeDay );
  272. static BOOL GetAccurateRoot( const char * rootpath, char *accurateroot, int maxlen );
  273. static int DetectVersion( const char * szRootPath );
  274. // Attributes
  275. static char m_szDataType[256];
  276. static int GetType( ) { return dbtypeQianlong; }
  277. static const char * GetName( ) { return m_szDataType; }
  278. virtual int GetDBType( ) { return GetType(); }
  279. virtual const char * GetDBTypeName( ) { return GetName(); }
  280. protected:
  281. int DetectVersion( );
  282. protected:
  283. int m_nVersion;
  284. };
  285. #endif //__STKLIB_QIANLONG_H__