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

金融证券系统

开发平台:

Visual C++

  1. /*
  2. Cross Platform Core Code.
  3. Copyright(R) 2001-2002 Balang Software.
  4. All rights reserved.
  5. Using:
  6. class CExpress;
  7. class CIndex;
  8. class CIndexContainer;
  9. */
  10. #if !defined( __STKLIB_EXPRESS_H__ )
  11. #define __STKLIB_EXPRESS_H__
  12. /***
  13. 定义股票列表项的唯一标识
  14. */
  15. // 股票
  16. #define SLH_NONE 0
  17. #define SLH_MIN 1
  18. #define SLH_CODE 1 // 股票代码
  19. #define SLH_NAME 2 // 股票名称
  20. // 技术数据
  21. #define SLH_DATE 3 // 日期
  22. #define SLH_LASTCLOSE 4 // 昨收
  23. #define SLH_OPEN 5 // 今开
  24. #define SLH_CLOSE 6 // 收盘价
  25. #define SLH_HIGH 7 // 最高价
  26. #define SLH_LOW 8 // 最低价
  27. #define SLH_AVERAGE 9 // 均价
  28. #define SLH_DIFF 10 // 涨跌
  29. #define SLH_DIFFPERCENT 11 // 涨幅%
  30. #define SLH_SCOPE 12 // 震幅%
  31. #define SLH_VOLUME 13 // 成交量
  32. #define SLH_AMOUNT 14 // 成交额
  33. #define SLH_VOLUP 15 // 外盘
  34. #define SLH_VOLDOWN 16 // 内盘
  35. #define SLH_DIFFPERCENT_MIN5 17 // 五分钟涨幅%
  36. #define SLH_SELLBUYRATIO 18 // 委比%
  37. #define SLH_SELLBUYDIFF 19 // 委量差
  38. #define SLH_BUYPRICE3 20 // 买价三
  39. #define SLH_BUYPRICE2 21 // 买价二
  40. #define SLH_BUYPRICE1 22 // 买价一
  41. #define SLH_SELLPRICE1 23 // 卖价一
  42. #define SLH_SELLPRICE2 24 // 卖价二
  43. #define SLH_SELLPRICE3 25 // 卖价三
  44. #define SLH_BUYVOLUME3 26 // 买量三
  45. #define SLH_BUYVOLUME2 27 // 买量二
  46. #define SLH_BUYVOLUME1 28 // 买量一
  47. #define SLH_SELLVOLUME1 29 // 卖量一
  48. #define SLH_SELLVOLUME2 30 // 卖量二
  49. #define SLH_SELLVOLUME3 31 // 卖量三
  50. // 主要基本指标
  51. #define SLH_REPORTTYPE 32 // 报表类型
  52. #define SLH_PE 33 // 市盈率
  53. #define SLH_PNETASSET 34 // 市净率
  54. #define SLH_PMAININCOME 35 // 市销率
  55. #define SLH_RATIO_PCASH 36 // 价格净现金比
  56. #define SLH_RATIO_CURRENCY 37 // 流通率
  57. #define SLH_RATIO_CHANGEHAND 38 // 换手率
  58. #define SLH_RATIO_VOLUME 39 // 量比
  59. #define SLH_RS 40 // 相对强度
  60. #define SLH_MARKETVALUE 41 // 总市值
  61. #define SLH_MARKETVALUEA 42 // A股市值
  62. #define SLH_MARKETVALUEB 43 // B股市值
  63. // ★偿债能力
  64. #define SLH_RATIO_LIQUIDITY 44 // 流动比率
  65. #define SLH_RATIO_QUICK 45 // 速动比率
  66. #define SLH_VELOCITY_RECEIVABLES 46 // 应收帐款周率
  67. // ★经营能力
  68. #define SLH_VELOCITY_MERCHANDISE 47 // 存货周转率
  69. #define SLH_MAIN_INCOME 48 // 主营业务收入
  70. #define SLH_CASH_PS 49 // 每股净现金流量
  71. // ★盈利能力
  72. #define SLH_PROFIT_MARGIN 50 // 主营业务利润率
  73. #define SLH_NETASSET_YIELD 51 // 净资产收益率
  74. // ★资本结构
  75. #define SLH_DATE_BEGIN 52 // 上市日期
  76. #define SLH_SHARE_COUNT_TOTAL 53 // 总股本
  77. #define SLH_SHARE_COUNT_A 54 // 流通A股
  78. #define SLH_SHARE_COUNT_B 55 // 流通B股
  79. #define SLH_SHARE_COUNT_H 56 // 流通H股
  80. #define SLH_SHARE_COUNT_NATIONAL 57 // 国有股
  81. #define SLH_SHARE_COUNT_CORP 58 // 法人股
  82. #define SLH_PROFIT_PSUD 59 // 每股未分配利润
  83. #define SLH_ASSET 60 // 总资产
  84. #define SLH_RATIO_HOLDERRIGHT 61 // 股东权益比率
  85. #define SLH_RATIO_LONGDEBT 62 // 长期负债率
  86. #define SLH_RATIO_DEBT 63 // 资产负债率
  87. // ★投资收益能力
  88. #define SLH_NETASSET_PS 64 // 每股净资产
  89. #define SLH_NETASSET_PS_REGULATE 65 // 调整每股净资产
  90. #define SLH_EPS 66 // 每股收益
  91. #define SLH_EPS_DEDUCT 67 // 扣除后每股收益
  92. #define SLH_NET_PROFIT 68 // 净利润
  93. #define SLH_MAIN_PROFIT 69 // 主营业务利润
  94. #define SLH_TOTAL_PROFIT 70 // 利润总额
  95. #define SLH_PROFIT_INC 71 // 主营利润增长率
  96. #define SLH_INCOME_INC 72 // 主营收入增长率
  97. #define SLH_ASSET_INC 73 // 总资产增长率
  98. #define SLH_ANNGAINS_AVERAGE 74 // 年平均收益率
  99. #define SLH_ANNGAINS_STDDEV 75 // 收益标准差
  100. #define SLH_BETA 76 // β值
  101. #define SLH_SHARP 77 // 夏普风险指数
  102. #define SLH_TRADE 78 // 行业
  103. #define SLH_PROVINCE 79 // 省份
  104. #define SLH_MAX 79
  105. #define SLH_INVALID (UINT(-1))
  106. #define SLH_USERDEFINE_BEGIN 10000
  107. #define SLH_WIDTH_MIN 60
  108. #define SLMAX_SLHTEXTLEN 256
  109. typedef struct slh_data_t {
  110. UINT slh_id;
  111. char string[SLMAX_SLHTEXTLEN+1];
  112. UINT weight;
  113. char varname[MP_MaxVarNameLen];
  114. }SLH_DATA;
  115. extern SLH_DATA slh_data_array[SLH_MAX+1];
  116. STKLIB_API CSPString AfxGetVariantName( UINT nVariantID, BOOL bWithParameter ); // 根据股票列表项ID得到名称,bWithParameter表示名称中是否含有参数
  117. STKLIB_API BOOL AfxGetVariantNameArray( CSPStringArray & astr, BOOL bWithParameter ); // 得到所有股票列表项的名称
  118. STKLIB_API UINT AfxGetVariantID( CSPString strName, BOOL bWithParameter ); // 根据股票列表项名称得到ID
  119. STKLIB_API CSPString AfxGetVariantVarName( int nVariantID ); // 根据股票列表项ID得到使用在表达式中的变量名称
  120. STKLIB_API CSPString AfxGetVariantVarName( CSPString strName, BOOL bWithParameter ); // 根据股票列表项名称得到使用在表达式中的变量名称
  121. STKLIB_API BOOL AfxGetVariantValue(UINT nVariantID, CStockInfo &info, double * pValue,
  122.    CStockContainer *pContainer ); // 得到某只股票的相应值,单位与股票列表视图中相同
  123. STKLIB_API int AfxCompareVariantValue(int nVariantID, CStockInfo & info1, CStockInfo &info2,
  124.    CStockContainer *pContainer ); // 比较两只股票的相应值
  125. STKLIB_API CSPString AfxGetVariantDispString(UINT nVariantID, CStockInfo &info,
  126. CStockContainer *pContainer ); // 得到某只股票的相应值的显示字串
  127. STKLIB_API COLORREF AfxGetVariantColor( UINT nVariantID, CStockInfo &info ); // 得到某只股票的相应值的显示颜色
  128. /***
  129. 表达式,可以包含变量
  130. */
  131. class STKLIB_API CExpress  
  132. {
  133. public:
  134. CExpress();
  135. CExpress( const CExpress &src );
  136. virtual ~CExpress();
  137. CExpress & operator = ( const CExpress &src);
  138. virtual void Serialize( CSPArchive &ar );
  139. BOOL SetExpressString( CSPString strExpressOrg );
  140. CSPString GetExpressString( );
  141. virtual CSPString GetLastErrorMsg( );
  142. BOOL GetExpressResult( double * pResult, BOOL * pError );
  143. protected:
  144. virtual BOOL PreCompile( );
  145. virtual BOOL InitParser( );
  146. protected:
  147. CSPString m_strExpressOrg; // Save to disk
  148. int m_nReserved; // Save to disk, Not Used
  149. BOOL m_bIsModified;
  150. CSPString m_strExpress;
  151. CMathParser m_parser;
  152. };
  153. /***
  154. 新建指标,包含含有变量的表达式,在股票列表上显示为一列
  155. */
  156. class STKLIB_API CIndex : public CExpress
  157. {
  158. public:
  159. CIndex( );
  160. CIndex( const CIndex &src );
  161. ~CIndex( );
  162. UINT m_nID;
  163. CSPString m_strName;
  164. CSPString m_strDescript;
  165. CSPString m_strReserved;
  166. CIndex & operator = ( const CIndex &src );
  167. virtual void Serialize( CSPArchive & ar );
  168. BOOL IsInvalidID( );
  169. BOOL SetNextID( );
  170. virtual BOOL CheckExpressValid( );
  171. BOOL GetExpressResult( double * pResult, CStockInfo &info, BOOL *pVariantNoValue, BOOL * pError );
  172. protected:
  173. virtual BOOL PreCompile( );
  174. virtual BOOL InitParser( CStockInfo &info, BOOL *pVariantNoValue );
  175. protected:
  176. CSPDWordArray m_adwVariant; // temp data
  177. };
  178. //template class __declspec(dllexport) CSPArray<CIndex, CIndex &>;
  179. typedef CSPArray<CIndex, CIndex &> CIndexArray;
  180. /***
  181. 新建指标数组
  182. */
  183. class STKLIB_API CIndexContainer : public CIndexArray
  184. {
  185. public:
  186. CIndexContainer( );
  187. virtual ~CIndexContainer( );
  188. // for access CIndexArray
  189. virtual int Add(CIndex &newElement) { return CIndexArray::Add(newElement); }
  190. void RemoveIndex( UINT nID );
  191. CIndex & GetIndex( UINT nID );
  192. CIndex & GetIndex( CSPString strName );
  193. BOOL EditIndex( CIndex &index );
  194. UINT GetNextID( );
  195. void FileSerialize( CSPArchive & ar );
  196. };
  197. #endif // __STKLIB_EXPRESS_H__