📄 stock.h
字号:
const OUTLINE* GetData() const;
OUTLINE* GetData();
// Potentially growing the array
void SetAtGrow(int nIndex, OUTLINE newElement);
int Add(OUTLINE newElement);
// overloaded operator helpers
OUTLINE operator[](int nIndex) const;
OUTLINE& operator[](int nIndex);
// Operations that move elements around
void InsertAt(int nIndex, OUTLINE newElement, int nCount = 1);
void RemoveAt(int nIndex, int nCount = 1);
void InsertAt(int nStartIndex, COutline* pNewArray);
int InsertOutlineSort( OUTLINE newElement );
void Sort( );
COutline & operator = ( const COutline &src );
void Copy( const COutline &src );
// Implementation
protected:
OUTLINE* m_pData; // the actual array of data
int m_nSize; // # of elements (upperBound - 1)
int m_nMaxSize; // max allocated
int m_nGrowBy; // grow amount
public:
~COutline();
};
class CStDatabase;
/***
单个股票信息类 CStock::dataInfo
*/
class STKLIB_API CStockInfo
{
public:
CStockInfo( );
CStockInfo( const CStockInfo &src );
// Operation
void Clear( );
CStockInfo & operator = ( const CStockInfo & si );
BOOL IsEqualTo( DWORD dwMarket, const char * szCode );
DWORD GetMarket( );
void SetMarket( DWORD dwMarket );
const char * GetStockCode( );
BOOL SetStockCode( DWORD dwMarket, const char * szCode );
LONG GetType( );
void SetType( LONG t );
void ResolveTypeAndMarket( );
const char * GetStockName( );
void SetStockName( const char * szName );
const char * GetStockNameEnu( );
void SetStockNameEnu( const char * szNameEnu );
const char * GetStockNameChs( );
void SetStockNameChs( const char * szName );
const char * GetStockShortName( );
void SetStockShortName( const char *szShortName );
const char * GetStockDomain( );
void SetStockDomain( const char * szDomain );
const char * GetStockProvince( );
void SetStockProvince( const char * szProvince );
BOOL StatTechIndex( DWORD dwDate ); // 设定当前技术资料日期,Format is YYYYMMDD
BOOL StatBaseIndex( DWORD dwDate ); // 设定当前基本资料日期,Format is YYYYMMDD
// Attributes
BOOL IsValidStock( ); // 股票信息是否正确
BOOL IsShangHai( ); // 上证股票
BOOL IsShenZhen( ); // 深证股票
BOOL IsIndex( ); // 是否指数
BOOL IsBond( ); // 是否债券
BOOL IsBondIndex( ); // 是否国债指数
BOOL IsFund( ); // 是否基金
int DigitBit( ); // 得到该股价格有几位小数位,基金和上海B股是三位
// Variant
BOOL GetAverage( double *pValue ); // 当日成交均价
BOOL GetDiff( double *pValue, DWORD dateCur, int nDays ); // 涨跌
BOOL GetDiffPercent( double *pValue, DWORD dateCur, int nDays ); // 涨跌幅度
BOOL GetScope( double *pValue, DWORD dateCur, int nDays ); // 涨跌范围
BOOL GetDiffPercentMin5( double *pValue );
BOOL GetPE( double * pValue ); // 市盈率
BOOL GetPNetAsset( double *pValue ); // 市净率
BOOL GetPMainIncome( double * pValue ); // 市销率
BOOL GetRatioPCash( double * pValue ); // 价格现金流比
BOOL GetShareCurrency( double * pValue ); // 流通股数
BOOL GetRatioCurrency( double * pValue ); // 流通比率
BOOL GetRatioChangeHand( double * pValue, double dVolume );
BOOL GetRatioChangeHand( CKData &kdata, double * pValue, DWORD dateCur, int nDays );
BOOL GetRatioChangeHand( double * pValue, DWORD dateCur, int nDays ); // n日换手率
BOOL GetRatioVolume( double * pValue, DWORD dateCur, int nDays ); // n日量比
BOOL GetRS( double * pValue, DWORD dateCur, int nDays ); // n日相对强度
BOOL GetSellBuyRatio( double *pdRatio, double *pdDiff ); // 委比和委差
BOOL GetMarketValue( double * pValue ); // 市值
BOOL GetMarketValueA( double * pValue ); // A股市值
BOOL GetMarketValueB( double * pValue ); // B股市值
BOOL GetXiapu( double * pValue ); // 夏普风险指数
protected:
// data from codetable
DWORD m_dwMarket; // 证券市场类型,see CStock::StockMarket
char m_szCode[STKLIB_MAX_CODE2]; // 证券代码,以'\0'结尾
LONG m_type; // see CStock::StockType
char m_szName[STKLIB_MAX_NAME]; // 名称
char m_szNameEnu[STKLIB_MAX_NAMEENU]; // 英文名称
char m_szShortname[STKLIB_MAX_SHORTNAME]; // 拼音简称
char m_szDomain[STKLIB_MAX_DOMAIN]; // 板块
char m_szProvince[STKLIB_MAX_PROVINCE]; // 省份
public:
DWORD m_datetech; //日期 Format is XXMMDDHHMM for 5min, Format is YYYYMMDD for day
float m_fLast; // 昨收(元)
float m_fOpen; // 开盘(元)
float m_fHigh; // 最高价(元)
float m_fLow; // 最低价(元)
float m_fClose; // 收盘(元)
float m_fVolume; // 成交量(股)
float m_fAmount; // 成交额(元)
DWORD m_dwAdvance; // 仅指数有效
DWORD m_dwDecline; // 仅指数有效
float m_fBuyPrice[5];
float m_fBuyVolume[5];
float m_fSellPrice[5];
float m_fSellVolume[5];
public:
CKData m_kdata; // 保存最近AfxGetProfile().GetCacheDays()天K线数据
CBaseData m_basedata; // 保存基本资料数据
CMinute m_minute; // 最近5分钟的MINUTE分时数据
REPORT m_reportLatest; // 保存最近的REPORT报价数据
public:
// From Base Data
DWORD m_datebase; //日期 Format is YYYYMMDD for base data
LONG m_reporttype;
float m_fErate_dollar; // 当期美元汇率
float m_fErate_hkdollar; // 当期港币汇率
// ★偿债能力
float m_fRatio_liquidity; // 流动比率
float m_fRatio_quick; // 速动比率
float m_fVelocity_receivables; // 应收帐款周率
// ★经营能力
float m_fVelocity_merchandise; // 存货周转率
float m_fMain_income; // 主营业务收入
float m_fCash_ps; // 每股净现金流量
// ★盈利能力
float m_fProfit_margin; // 主营业务利润率 %
float m_fNetasset_yield; // 净资产收益率 %
// ★资本结构
DWORD m_datebegin; // 上市日期 Format is YYYYMMDD
float m_fShare_count_total; // 总股本
float m_fShare_count_a; // 流通A股
float m_fShare_count_b; // 流通B股
float m_fShare_count_h; // 流通H股
float m_fShare_count_national; // 国有股
float m_fShare_count_corp; // 法人股
float m_fProfit_psud; // 每股未分配利润
float m_fAsset; // 总资产
float m_fRatio_holderright; // 股东权益比率 %
float m_fRatio_longdebt; // 长期负债率 %
float m_fRatio_debt; // 资产负债率 %
// ★投资收益能力
float m_fNetasset_ps; // 每股净资产
float m_fNetasset_ps_regulate; // 调整每股净资产
float m_fEps; // 每股收益
float m_fEps_deduct; // 扣除后每股收益
float m_fNet_profit; // 净利润
float m_fMain_profit; // 主营业务利润
float m_fTotal_profit; // 利润总额
// ★增长率
float m_fProfit_inc; // 主营利润增长率%
float m_fIncome_inc; // 主营收入增长率%
float m_fAsset_inc; // 总资产增长率%
// ★技术数据统计值
float m_fYield_average; // 平均收益率%
float m_fYield_stddev; // 收益标准差%
float m_fBeite; // β值
};
/***
单个股票的数据,包括股票信息,K线数据,基本资料,除权除息数据等。
*/
class CStock
{
public:
// Constructors
CStock( );
CStock( CStDatabase * pDatabase );
CStock( CStDatabase * pDatabase, DWORD dwMarket, const char * code );
virtual ~CStock();
// Flag values
enum StockMarket {
marketUnknown = 'UKNW', // 未知
marketSHSE = 'ESHS', // 上海证券交易所
marketSZSE = 'ESZS', // 深圳证券交易所
marketCYSE = 'ESYC', // 中国大陆创业板市场
marketCHNA = 'ANHC', // 中国大陆上海或深圳或创业板证券交易所
marketHKEX = 'XEKH', // 香港联合交易所
marketTBSE = 'ESBT', // 台北证券交易所
marketTKSE = 'EST', // 东京证券交易所
marketLSE = 'ESL', // 伦敦证券交易所
marketFLKFSE = 'FKLF', // 法兰克福证券交易所
marketNYSE = 'ESYN', // 纽约证券交易所
marketNASDAQ = 'QDSN', // 纳斯达克证券交易所
};
enum DataType {
dataUnknown = 0x00, // 未知数据
dataInfo = 0x01, // 股票信息
dataK = 0x02, // K线数据
dataDR = 0x03, // 权息资料
dataBasetable = 0x04, // 财务数据
dataBasetext = 0x05, // F10资料
dataNews = 0x06, // 新闻资讯
dataReport = 0x07, // 行情刷新数据
dataMinute = 0x08, // 行情分时数据
dataOutline = 0x09, // 行情额外数据
dataCode = 0x0A, // 股票代码数组
dataMultisort = 0x0B, // 综合排名
dataDetail = 0x0C, // 成交明细
};
enum StockType {
typeNone = 0x00,
typeshIndex = 0x10, // 上海指数
typeshA = 0x11, // 上海A股
typeshB = 0x12, // 上海B股
typeshBond = 0x13, // 上海债券
typeshRight = 0x14, // 上海权证
typeshBonus = 0x15, // 上海红利
typeshAdmeasure = 0x16, // 上海配股
typeshInfo = 0x1F, // 上海证交所信息
typeszIndex = 0x20, // 深圳指数 0x20
typeszA = 0x21, // 深圳A股 0x21
typeszB = 0x22, // 深圳B股 0x22
typeszBond = 0x23, // 深圳债券 0x23
typeszRight = 0x24, // 深圳权证 0x24
typeszBonus = 0x25, // 深圳红利 0x25
typeszAdmeasure = 0x26, // 深圳配股 0x26
typeszInfo = 0x2F, // 深圳证交所信息 0x2f
typeGeneralInfo = 0x05, // 综合财经信息 0x05
};
enum StockTypeMark {
markShanghai = 0x10, // 上海
markShenzhen = 0x20, // 深圳
markGeneralInfo = 0x05, // 综合财经信息
};
enum ReportType {
reportUnknown = 0x00, // 未知
reportQuarter = 0x01, // 第一季度季报
reportMid = 0x02, // 中报
reportQuarter3 = 0x03, // 第三季度季报
reportAnnals = 0x04, // 年报
};
enum MultisortType {
classRise = 0x01, // 涨幅
classFall = 0x02, // 跌幅
claddRiseMin5 = 0x04, // 5分钟涨幅
classFallMin5 = 0x08, // 5分钟跌幅
classBSRatioAsc = 0x10, // 委比前六
classBSRatioDesc= 0x20, // 委比后六
classDiff = 0x40, // 震幅
classVolRatio = 0x80, // 量比
classAmount = 0x100, // 总金额
};
static double GetReportFactor( int nReportType );
// Attributes
void SetDatabase( CStDatabase * pDatabase );
CStDatabase * GetDatabase( );
void SetStockCode( DWORD dwMarket, const char * szCode );
const char * GetStockCode( );
BOOL SetStockInfo( CStockInfo * pInfo );
CStockInfo & GetStockInfo( );
CKData & GetKData( int ktype );
CKData & GetKDataMonth( );
CKData & GetKDataWeek( );
CKData & GetKDataDay( );
CKData & GetKDataMin60( );
CKData & GetKDataMin30( );
CKData & GetKDataMin15( );
CKData & GetKDataMin5( );
CDRData & GetDRData( );
CReport & GetReport( );
CMinute & GetMinute( );
COutline & GetOutline( );
char * GetBaseTextPtr( );
int GetBaseTextLength( );
BOOL AllocBaseTextMem( int nNewLength );
// Operations
void Clear( );
int PrepareData( int nDataType = dataInfo, int nKType = CKData::ktypeDay, BOOL bReload = FALSE );
int PrepareBaseInfo( BOOL bReload = FALSE );
int ExtractKData( int nKType, BOOL bForced );
int MergeBaseText( CStock &stock );
int MergeKData( CStock &stock, int nKType );
int MergeDRData( CStock &stock );
int StoreDRData( );
protected:
void SetKDataTypes( );
protected:
CStDatabase * m_pDatabase;
CStockInfo m_stockinfo;
CKData m_kdMonth;
CKData m_kdWeek;
CKData m_kdDay;
CKData m_kdMin60;
CKData m_kdMin30;
CKData m_kdMin15;
CKData m_kdMin5;
CDRData m_drData;
CReport m_report;
CMinute m_minute;
COutline m_outline;
int m_nBaseTextLen;
char * m_pBaseText;
};
#ifdef _SP_ENABLE_INLINES
#define _STOCK_INLINE inline
#include "Stock.inl"
#undef _STOCK_INLINE
#endif
#endif //__STKLIB_STOCK_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -