📄 stock.h
字号:
/*
Cross Platform Core Code.
Copyright(R) 2001-2002 Balang Software.
All rights reserved.
Using:
class CKData
class CDRData
class CBaseData
class CReport
class CMinute
class COutline
class CStockInfo
class CStock
*/
#if !defined( __STKLIB_STOCK_H__ )
#define __STKLIB_STOCK_H__
#define STKLIB_DATA_INVALID 0x7FFFFFFF
#define STKLIB_DAYS_INONEYEAR 240
#define STKLIB_DAYS_CACHE 60
#define STKLIB_DAYS_CALCULATE 30
#define STKLIB_AUTORESUMEDR_DATEBEGIN 20040519
#define STKLIB_AUTORESUMEDR_LIMIT 11
#define STKLIB_CODE_MAIN "1A0001"
#define STKLIB_CODE_MAINSZN "399001"
#define STKLIB_CODE_SZZS "1A0001" // 上证指数
#define STKLIB_CODE_SZYBL "1A0009" // 上证180指数
#define STKLIB_CODE_SZAG "1A0002" // 上证A股
#define STKLIB_CODE_SZBG "1A0003" // 上证B股
#define STKLIB_CODE_SZNCZ "399001" // 深证成指
#define STKLIB_CODE_SZNZZ "399106" // 深证综指
#define STKLIB_CODE_SZNCFAZ "399002" // 深证成份A指
#define STKLIB_CODE_SZNCFBZ "399003" // 深证成份B指
#define STKLIB_CODE_SZNFIRST "000001" // 深证第一支股票
#define STKLIB_CODE_SHAFIRST "600000" // 上证第一支股票
#define STKLIB_CODE_ZLDD "000000" // 主力大单
// some fixed length
#define STKLIB_MAX_CODE 8
#define STKLIB_MAX_CODE2 16 // 兼容较长股票代码
#define STKLIB_MAX_NAME 16
#define STKLIB_MAX_NAMEENU 80
#define STKLIB_MAX_SHORTNAME 16
#define STKLIB_MAX_DOMAIN 32
#define STKLIB_MAX_PROVINCE 32
// some enum values
#pragma pack(1)
// 本头文件中定义的数值单位:
// 价格及与金额有关的单位,如成交金额、主营收入、每股收益、总市值等:元
// 成交量单位:手(=100股)
/////////////////////////////////////////////////////////////////////////////////////////////
// 股票静态数据结构
// K线数据结构 CStock::dataK
typedef struct kdata_t {
DWORD m_dwMarket; // 证券市场类型,see CStock::StockMarket
char m_szCode[STKLIB_MAX_CODE]; // 证券代码,以'\0'结尾
DWORD m_date; //日期 Format is XXMMDDHHMM for 5min, Format is YYYYMMDD for day
time_t m_time; //时间 与m_date一致.如果是是某日,则小时分秒均为0
float m_fOpen; // 开盘价(元)
float m_fHigh; // 最高价(元)
float m_fLow; // 最低价(元)
float m_fClose; // 收盘价(元)
float m_fVolume; // 成交量(股)
float m_fAmount; // 成交金额(元)
DWORD m_dwAdvance; // 仅指数有效
DWORD m_dwDecline; // 仅指数有效
DWORD m_dwReserved;
} KDATA, *PKDATA;
// 除权数据结构 CStock::dataDR
typedef struct drdata_t
{
DWORD m_dwMarket; // 证券市场类型,see CStock::StockMarket
char m_szCode[STKLIB_MAX_CODE]; // 证券代码,以'\0'结尾
DWORD m_date; //日期 Format is XXMMDDHHMM for 5min, Format is YYYYMMDD for day
time_t m_time; //时间 与m_date一致.如果是是某日,则小时分秒均为0
float m_fGive; // 每股送
float m_fPei; // 每股配
float m_fPeiPrice; // 配股价,仅当 m_fPei!=0.0f 时有效
float m_fProfit; // 每股红利
DWORD m_dwReserved;
} DRDATA, * PDRDATA;
// 财务信息数据结构 CStock::dataBasetbl
typedef struct basedata_t {
DWORD m_dwMarket; // 证券市场类型,see CStock::StockMarket
char m_szCode[STKLIB_MAX_CODE2]; // 证券代码,以'\0'结尾
char m_szDomain[STKLIB_MAX_DOMAIN]; // 板块
char m_szProvince[STKLIB_MAX_PROVINCE]; // 省份
time_t m_time; // 日期,time_t
DWORD m_date; // 日期 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; // β值
DWORD m_dwReserved[4];
}BASEDATA, *PBASEDATA;
// 股票静态数据结构结束
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
// 实时行情使用数据结构
// 行情刷新数据结构 CStock::dataReport
typedef struct report_t {
DWORD m_dwMarket; // 证券市场类型,see CStock::StockMarket
char m_szCode[STKLIB_MAX_CODE]; // 证券代码,以'\0'结尾
char m_szName[STKLIB_MAX_NAME]; // 证券名称,以'\0'结尾
time_t m_time; // 交易时间
DWORD m_dwFlag; // 停牌标志
float m_fLast; // 昨收(元)
float m_fOpen; // 今开(元)
float m_fHigh; // 最高(元)
float m_fLow; // 最低(元)
float m_fNew; // 最新(元)
float m_fVolume; // 成交量(股)
float m_fAmount; // 成交额(元)
float m_fBuyPrice[5]; // 申买价1,2,3,4(元)
float m_fBuyVolume[5]; // 申买量1,2,3,4(股)
float m_fSellPrice[5]; // 申卖价1,2,3,4(元)
float m_fSellVolume[5]; // 申卖量1,2,3,4(股)
} REPORT, *PREPORT;
// 行情分时数据结构 CStock::dataMinute
typedef struct minute_t {
DWORD m_dwType; // 1 min, 5 min, 15 min, 30 min line
DWORD m_dwMarket; // 证券市场类型,see CStock::StockMarket
char m_szCode[STKLIB_MAX_CODE]; // 证券代码,以'\0'结尾
time_t m_time; // 交易时间
float m_fHigh; // 最高价(元)
float m_fLow; // 最低价(元)
float m_fNew; // 最新价(元)
float m_fVolume; // 成交量(股)
float m_fAmount; // 成交额(元)
} MINUTE, *PMINUTE;
// 行情额外数据结构 CStock::dataOutline
typedef struct outline_t {
time_t m_time;
DWORD m_dwShHq;
DWORD m_dwSzHq;
DWORD m_dwShPriceUp;
DWORD m_dwShPriceDown;
DWORD m_dwSzPriceUp;
DWORD m_dwSzPriceDown;
DWORD m_dwShWbUp;
DWORD m_dwShWbDown;
DWORD m_dwSzWbUp;
DWORD m_dwSzWbDown;
DWORD m_dwShStockCount;
DWORD m_dwSzStockCount;
} OUTLINE, *POUTLINE;
// 综合排名数据结构 CStock::dataMultisort
//综合排名
typedef struct multisort_item_t {
BYTE m_type; // stock's type
char m_code[6]; // stock code
long m_data1;
long m_data2;
} MULTISORT_ITEM;
typedef struct multisort_t {
DWORD m_class; // 1-涨幅 2-跌幅 4-5分钟涨幅 8-5分钟跌幅 16-委比前六 32-委比后六
// 64-震幅 128-量比 256-总金额
DWORD m_tag; // 0xf0 00 06 00
MULTISORT_ITEM m_stocks[6];
} MULTISORT, *PMULTISORT;
// 股票代码 CStock::dataCode
typedef struct stockcode {
DWORD m_dwMarket; // 证券市场类型,see CStock::StockMarket
char m_szCode[STKLIB_MAX_CODE2]; // 证券代码,以'\0'结尾
} STOCKCODE, *PSTOCKCODE;
// 行情通用数据包
#define STKLIB_COMMPACKET_TAG 'KPMC'
typedef struct commpacket_t {
DWORD m_dwTag; // = STKLIB_COMMPACKET_TAG
DWORD m_dwDataType; // see CStock::DataType
DWORD m_dwCount;
union
{
REPORT * m_pReport; // 行情刷新数据
MINUTE * m_pMinute; // 分时成交数据
MULTISORT * m_pMultisort; // 综合排名数据
OUTLINE * m_pOutline; // 附加数据
KDATA * m_pKdata; // 补充历史日线数据
DRDATA * m_pDrdata; // 补充权息资料
STOCKCODE * m_pStockcode; // 股票代码
void * m_pData;
};
} COMMPACKET, *PCOMMPACKET;
// 实时行情使用数据结构结束
/////////////////////////////////////////////////////////////////////////////////////////////
#pragma pack()
#ifndef STKLIB_API
#define STKLIB_API __declspec(dllimport)
#endif
/***
除权除息数组类
*/
class STKLIB_API CDRData
{
public:
// Construction
CDRData();
CDRData( const CDRData &src );
// Attributes
int GetSize() const;
int GetUpperBound() const;
void SetSize(int nNewSize, int nGrowBy = -1);
// Operations
// Clean up
void FreeExtra();
void RemoveAll();
// Accessing elements
DRDATA GetAt(int nIndex) const;
void SetAt(int nIndex, DRDATA newElement);
DRDATA& ElementAt(int nIndex);
// Direct Access to the element data (may return NULL)
const DRDATA* GetData() const;
DRDATA* GetData();
// Potentially growing the array
void SetAtGrow(int nIndex, DRDATA newElement);
int Add(DRDATA newElement);
// overloaded operator helpers
DRDATA operator[](int nIndex) const;
DRDATA& operator[](int nIndex);
// Operations that move elements around
void InsertAt(int nIndex, DRDATA newElement, int nCount = 1);
void RemoveAt(int nIndex, int nCount = 1);
void InsertAt(int nStartIndex, CDRData* pNewArray);
int InsertDRDataSort( DRDATA newElement );
void Sort( );
CDRData & operator = ( const CDRData &src );
void Copy( const CDRData &src );
BOOL IsSameAs( CDRData * psrc );
// Implementation
protected:
DRDATA* 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:
~CDRData();
};
/***
K线数据数组类
*/
class STKLIB_API CKData
{
public:
// Constructors
CKData();
CKData( int ktype, int maindatatype = mdtypeClose );
CKData( const CKData & src );
CKData & operator = ( const CKData &src );
static BOOL IsDayOrMin( int nKType );
// Flag values
enum KTypes {
ktypeNone = 0x00,
ktypeMin = 0x01,
ktypeMin5 = 0x01,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -