TW.h
上传用户:nameszq
上传日期:2014-08-12
资源大小:336k
文件大小:6k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. #ifndef __NETTS_TW_H__
  2. #define __NETTS_TW_H__
  3. #include "Stockdrv.h"
  4. #pragma pack(1)
  5. typedef STOCK_STRUCTEx TW_STOCK;
  6. typedef CArray<TW_STOCK, TW_STOCK&> CTWStockArray;
  7. //typedef struct _tw_stock_t {
  8. // BYTE m_type; // stock's type
  9. // char m_code[6]; // stock code
  10. //} TW_STOCK;
  11. #define TW_MAGIC 0xFDFDFDFD
  12. #define TW_MAGIC_BYTE 0xFD
  13. #define TW_LENGTH_LEN 8
  14. typedef struct _tw_header_t {
  15. DWORD m_magic; // 0xFDFDFDFD
  16. char m_length[TW_LENGTH_LEN];
  17. char m_end; // always 0
  18. } TW_HEADER;
  19. typedef struct _tw_login_t {
  20. TW_HEADER m_header; //
  21. BYTE m_tag; // 0x0A
  22. WORD m_name_len;
  23. char m_data[256]; // (NAME)(WORD m_passwd_len)(PASSWD)
  24. } TW_LOGIN;
  25. typedef struct _tw_ask_t {
  26. TW_HEADER m_header; //
  27. BYTE m_tag1; // second data type
  28. BYTE m_tag2; // data type
  29. BYTE m_serial; // request serial, max 0x7f
  30. BYTE m_reserved; // always 0x00
  31. SHORT m_size; // request data's size
  32. TW_STOCK m_stocks[32]; // max 32 stocks
  33. } TW_ASK;
  34. typedef struct _tw_ans_t {
  35. TW_HEADER m_header; //
  36. BYTE m_tag1; // second data type
  37. BYTE m_tag2; // data type
  38. BYTE m_serial; // request serial, max 0x7f
  39. BYTE m_reserved; // always 0x00
  40. SHORT m_size; // request data's size
  41. } TW_ANS;
  42. typedef struct _tw_ans_init_t {
  43. BYTE m_tag; // = 0xfd
  44. CHAR m_name[8];
  45. BYTE m_type;
  46. CHAR m_code[6];
  47. DWORD m_lastclose; // 昨收 0.001
  48. DWORD m_reserved2;
  49. CHAR m_shortname[4];
  50. } TW_ANS_INIT;
  51. typedef struct _tw_ans_report_t {
  52. WORD m_number; // No.
  53. DWORD m_volnow; // 现手(单位为股)
  54. DWORD m_open; // 0.001
  55. DWORD m_high; // 0.001
  56. DWORD m_low; // 0.001
  57. DWORD m_new; // 0.001
  58. DWORD m_volume;
  59. DWORD m_amount;
  60. DWORD m_buy1; // 0.001
  61. DWORD m_buy1vol;
  62. DWORD m_buy2; // 0.001
  63. DWORD m_buy2vol;
  64. DWORD m_buy3; // 0.001
  65. DWORD m_buy3vol;
  66. DWORD m_sell1; // 0.001
  67. DWORD m_sell1vol;
  68. DWORD m_sell2; // 0.001
  69. DWORD m_sell2vol;
  70. DWORD m_sell3; // 0.001
  71. DWORD m_sell3vol;
  72. WORD m_reserved; // = 0x64 0x00
  73. } TW_ANS_REPORT;
  74. typedef struct _tw_detail_t {
  75. WORD m_offset;
  76. DWORD m_price; // 0.001
  77. DWORD m_volume;
  78. DWORD m_buy; // 0.001
  79. DWORD m_sell; // 0.001
  80. } TW_DETAIL;
  81. typedef struct _tw_minute_t {
  82. DWORD m_data1; // * 0.001 if price
  83. DWORD m_data2; // * 0.001 if price
  84. } TW_MINUTE;
  85. typedef struct _tw_ans_minute_t {
  86. TW_DETAIL m_details[11];
  87. WORD m_offset;
  88. DWORD m_bargain;
  89. DWORD m_outter;
  90. DWORD m_innter;
  91. DWORD m_open; // 0.001
  92. DWORD m_high; // 0.001
  93. DWORD m_low; // 0.001
  94. DWORD m_new; // 0.001
  95. DWORD m_volume;
  96. DWORD m_amount;
  97. DWORD m_buy1; // 0.001
  98. DWORD m_buy1vol;
  99. DWORD m_buy2; // 0.001
  100. DWORD m_buy2vol;
  101. DWORD m_buy3; // 0.001
  102. DWORD m_buy3vol;
  103. DWORD m_sell1; // 0.001
  104. DWORD m_sell1vol;
  105. DWORD m_sell2; // 0.001
  106. DWORD m_sell2vol;
  107. DWORD m_sell3; // 0.001
  108. DWORD m_sell3vol;
  109. WORD m_reserved; // = 0x64 0x00
  110. TW_MINUTE m_minutes[246];
  111. } TW_ANS_MINUTE;
  112. typedef struct _tw_ans_history_t {
  113. DWORD m_date; //日期 Format is MMDDHHMM for 5min, Format is YYYYMMDD for day
  114. DWORD m_open; // 0.001
  115. DWORD m_high; // 0.001
  116. DWORD m_low; // 0.001
  117. DWORD m_close; // 0.001
  118. DWORD m_volume; // 100
  119. } TW_ANS_HISTORY;
  120. typedef RCV_MULTISORT_STRUCTEx TW_ANS_MULTISORT;
  121. typedef struct _tw_ans_detail_t {
  122. WORD m_offset;
  123. DWORD m_price; // 0.001
  124. DWORD m_volume;
  125. DWORD m_buy1; // 0.001
  126. DWORD m_sell1; // 0.001
  127. } TW_ANS_DETAIL;
  128. /* INIT
  129. m_tag1 = 0x01
  130. m_tag2 = 0x01
  131. m_serial = 0x00
  132. m_size = 0x0007
  133. the next 7 bytes = 0xdc, 0xcc, 0x31, 0x01, 0x00, 0x00, 0x00
  134. the next is string:
  135. "E013.45D013.04D022.03D043.20xcs1.00.is2.00"
  136. */
  137. /* REPORT
  138. m_tag1 = 0x00
  139. m_tag2 = 0x03
  140. m_size = 本次请求股票个数
  141. 重复m_size次TW_STOCK
  142. */
  143. /* MINUTE
  144. m_tag1 = 0x01
  145. m_tag2 = 0x04
  146. m_size = 0x0001
  147. m_stocks = 1个stock
  148. */
  149. /* HISTORY
  150. 更换股票后的第一次请求:
  151. m_tag1 = 0x20日 0x33五分 0x43十五分 0x53三十分 00x63六十分 0x83周 0x93月
  152. m_tag2 = 0x09
  153. m_size = 请求数据个数*-1
  154. m_stocks = 1个stock
  155. 更换数据类型后的第一次请求:
  156. m_tag1 = 0x11日 0x31五分 0x41十五分 0x51三十分 00x61六十分 0x81周 0x91月
  157. m_tag2 = 0x09
  158. m_size = 请求数据个数*-1
  159. m_stocks = 1个stock
  160. 连续请求:
  161. m_tag1 = 0x12日 0x32五分 0x42十五分 0x52三十分 00x62六十分 0x82周 0x92月 
  162. m_tag2 = 0x09
  163. m_size = 请求数据个数*-1
  164. m_stocks = 1个stock
  165. */
  166. /* MULTISORT
  167. m_tag1 = 0x0a
  168. m_tag2 = 0x08
  169. m_size = 请求数据个数*-1,一般情况下为 ((WORD)-9)
  170. m_stocks[0].m_type = enum StockType
  171. m_stocks[0].m_code = 0x06 0x00 0xff 0x01 0x00 0x00
  172. */
  173. /* DETAIL
  174. m_tag1 = 0x01
  175. m_tag2 = 0x02
  176. m_size = 0x0001
  177. m_stocks = 1个stock
  178. */
  179. /* BASE
  180. m_tag1 = 0x05
  181. m_tag2 = 0x0b
  182. m_size = 0x0005
  183. m_stocks = 5个stock
  184. */
  185. #pragma pack()
  186. // return the real length of the constructed buffer, -1 means no enough memory
  187. int ConstructLength( TW_HEADER & header, int len );
  188. int ConstructLoginBuffer( BYTE * buffer, size_t maxlen, LPCTSTR lpszUser, LPCTSTR lpszPasswd );
  189. int ConstructAskInitBuffer( TW_ASK & ask );
  190. int ConstructAskReportBuffer( TW_ASK & ask, TW_STOCK * pStocks, size_t size );
  191. int ConstructAskMinuteBuffer( TW_ASK & ask, TW_STOCK * pStock );
  192. int ConstructAskHistoryBuffer(TW_ASK & ask, TW_STOCK * pStock, int nKType, int nDataCount,
  193.   BOOL bChangeStock, BOOL bFirstRequest );
  194. int ConstructAskMultisortBuffer( TW_ASK & ask, TW_STOCK * pStock );
  195. int ConstructAskDetailBuffer( TW_ASK & ask, TW_STOCK * pStock );
  196. int ConstructAskBaseBuffer( TW_ASK & ask, TW_STOCK * pStock );
  197. size_t TryGetLength( TW_HEADER & header );
  198. size_t TryGetLength( BYTE * buffer, size_t len );
  199. BOOL IsLoginOK( BYTE * buffer, size_t len );
  200. int TryGetInit( BYTE * buffer, size_t len, PRCV_DATA pRCV_DATA );
  201. int TryGetReport( BYTE * buffer, size_t len, PRCV_DATA pRCV_DATA );
  202. int TryGetMinute( BYTE * buffer, size_t len, PRCV_DATA pRCV_MINUTE, PRCV_DATA pRCV_REPORT );
  203. int TryGetHistory( BYTE * buffer, size_t len, PRCV_DATA pRCV_DATA );
  204. int TryGetMultisort( BYTE * buffer, size_t len, PRCV_DATA pRCV_DATA );
  205. int TryGetDetail( BYTE * buffer, size_t len, PRCV_DATA pRCV_DATA );
  206. int TryGetBase( BYTE * buffer, size_t len, PRCV_DATA pRCV_DATA );
  207. #endif