📄 express.cpp.svn-base
字号:
return ( fabs(info.m_fNetasset_ps_regulate) > 1e-4 );
case SLH_EPS: // 每股收益
*pValue = factor * info.m_fEps;
return ( fabs(info.m_fEps) > 1e-4 );
case SLH_EPS_DEDUCT: // 扣除后每股收益
*pValue = factor * info.m_fEps_deduct;
return ( fabs(info.m_fEps_deduct) > 1e-4 );
case SLH_NET_PROFIT: // 净利润
*pValue = factor * info.m_fNet_profit * 0.0001;
return ( fabs(info.m_fNet_profit) > 1e-4 );
case SLH_MAIN_PROFIT: // 主营业务利润
*pValue = factor * info.m_fMain_profit * 0.0001;
return ( fabs(info.m_fMain_profit) > 1e-4 );
case SLH_TOTAL_PROFIT: // 利润总额
*pValue = factor * info.m_fTotal_profit * 0.0001;
return ( fabs(info.m_fTotal_profit) > 1e-4 );
case SLH_PROFIT_INC: // 主营利润增长率
*pValue = info.m_fProfit_inc;
return TRUE;
case SLH_INCOME_INC: // 主营收入增长率
*pValue = info.m_fIncome_inc;
return TRUE;
case SLH_ASSET_INC: // 总资产增长率
*pValue = info.m_fAsset_inc;
return TRUE;
case SLH_ANNGAINS_AVERAGE: // 年平均收益率
*pValue = info.m_fYield_average;
return ( fabs(STKLIB_DATA_INVALID - info.m_fYield_average) > 1e-4 );
case SLH_ANNGAINS_STDDEV: // 收益标准差
*pValue = info.m_fYield_stddev;
return ( fabs(STKLIB_DATA_INVALID - info.m_fYield_stddev) > 1e-4 );
case SLH_BETA: // β值
*pValue = info.m_fBeite;
return ( fabs(STKLIB_DATA_INVALID - info.m_fBeite) > 1e-4 );
case SLH_SHARP: // 夏普风险指数
return info.GetXiapu( pValue );
default: ;
}
}
else if( nVariantID >= SLH_USERDEFINE_BEGIN )
{
BOOL bNoValue = FALSE;
if( pContainer && pContainer->GetVariantSaveValue( pValue, nVariantID, info, &bNoValue ) )
return !bNoValue;
CIndexContainer & container = AfxGetProfile().GetSListColumnsUser();
CIndex & index = container.GetIndex( nVariantID );
BOOL bSuccess = index.GetExpressResult( pValue, info, &bNoValue, NULL );
if( pContainer && pValue )
pContainer->SetVariantSaveValue( *pValue, nVariantID, info, bNoValue );
return bSuccess;
}
return FALSE;
}
int dwordcmp( DWORD dw1, DWORD dw2 )
{
if( dw1 > dw2 )
return 1;
else if( dw1 < dw2 )
return -1;
else
return 0;
}
int longcmp( LONG l1, LONG l2 )
{
if( l1 > l2 )
return 1;
else if( l1 < l2 )
return -1;
else
return 0;
}
int doublecmp( double d1, double d2 )
{
if( d1 > d2 )
return 1;
else if( d1 < d2 )
return -1;
else
return 0;
}
int AfxCompareVariantValue( int nVariantID, CStockInfo & info1, CStockInfo &info2,
CStockContainer * pContainer )
{
long x1 = 0, x2 = 0;
double d1 = 0., d2 = 0.;
BOOL bGet1 = FALSE, bGet2 = FALSE;
switch( nVariantID )
{
case SLH_CODE: // 股票代码
return strcmp( info1.GetStockCode(), info2.GetStockCode() );
case SLH_NAME: // 股票名称
return strcmp( info1.GetStockName(), info2.GetStockName() );
// 技术数据
case SLH_DATE: // 日期
return dwordcmp( info1.m_datetech, info2.m_datetech );
case SLH_DATE_BEGIN: // 上市日期
return dwordcmp( info1.m_datebegin, info2.m_datebegin );
// 主要基本指标
case SLH_REPORTTYPE: // 报表类型
return dwordcmp( info1.m_reporttype, info2.m_reporttype );
case SLH_PE: // 市盈率
case SLH_PNETASSET: // 市净率
case SLH_PMAININCOME: // 市销率
case SLH_RATIO_PCASH: // 价格净现金比
bGet2 = AfxGetVariantValue( nVariantID, info2, &d2, pContainer );
bGet1 = AfxGetVariantValue( nVariantID, info1, &d1, pContainer );
if( !bGet2 && !bGet1 )
return 0;
if( !bGet2 ) return 1;
if( !bGet1 ) return -1;
if( d1 < 0 && d2 < 0 )
return doublecmp( d1, d2 );
if( d1 < 0 ) return 1;
if( d2 < 0 ) return -1;
return doublecmp( d1, d2 );
case SLH_TRADE: // 行业
return strcmp( info1.GetStockDomain(), info2.GetStockDomain() );
case SLH_PROVINCE: // 省份
return strcmp( info1.GetStockProvince(), info2.GetStockProvince() );
default:
bGet2 = AfxGetVariantValue( nVariantID, info2, &d2, pContainer );
bGet1 = AfxGetVariantValue( nVariantID, info1, &d1, pContainer );
if( !bGet2 && !bGet1 )
return 0;
if( !bGet2 ) return 1;
if( !bGet1 ) return -1;
return doublecmp( d1, d2 );
}
return 0;
}
CSPString AfxGetVariantDispString(UINT nVariantID, CStockInfo &info,
CStockContainer * pContainer )
{
CSPString strTemp;
int x = 0;
double dTemp = 0;
switch( nVariantID )
{
case SLH_CODE: // 股票代码
strTemp = info.GetStockCode();
break;
case SLH_NAME: // 股票名称
strTemp = info.GetStockName();
break;
// 技术数据
case SLH_DATE: // 日期
if( 0 != info.m_datetech )
strTemp.Format( "%.2d/%.2d/%.2d", (info.m_datetech/10000)%100, (info.m_datetech%10000)/100, info.m_datetech%100 );
break;
case SLH_DATE_BEGIN: // 上市日期
if( 0 != info.m_datebegin )
strTemp.Format( "%.2d/%.2d/%.2d", (info.m_datebegin/10000)%100, (info.m_datebegin%10000)/100, info.m_datebegin%100 );
break;
case SLH_LASTCLOSE: // 昨收
case SLH_OPEN: // 今开
case SLH_CLOSE: // 收盘价
case SLH_HIGH: // 最高价
case SLH_LOW: // 最低价
case SLH_AVERAGE: // 均价
case SLH_DIFF: // 涨跌
case SLH_BUYPRICE3: // 买价三
case SLH_BUYPRICE2: // 买价二
case SLH_BUYPRICE1: // 买价一
case SLH_SELLPRICE1: // 卖价一
case SLH_SELLPRICE2: // 卖价二
case SLH_SELLPRICE3: // 卖价三
if( AfxGetVariantValue( nVariantID, info, &dTemp, pContainer ) )
{
CSPString strPriceFmt;
strPriceFmt.Format( "%%.%df", info.DigitBit() );
strTemp.Format( strPriceFmt, dTemp );
}
break;
case SLH_VOLUME: // 成交量
case SLH_AMOUNT: // 成交额
case SLH_VOLUP: // 外盘
case SLH_VOLDOWN: // 内盘
case SLH_SELLBUYDIFF: // 委量差
case SLH_BUYVOLUME3: // 买量三
case SLH_BUYVOLUME2: // 买量二
case SLH_BUYVOLUME1: // 买量一
case SLH_SELLVOLUME1: // 卖量一
case SLH_SELLVOLUME2: // 卖量二
case SLH_SELLVOLUME3: // 卖量三
case SLH_MARKETVALUE: // 总市值
case SLH_MARKETVALUEA: // A股市值
case SLH_MARKETVALUEB: // B股市值
case SLH_SHARE_COUNT_TOTAL: // 总股本
case SLH_SHARE_COUNT_A: // 流通A股
case SLH_SHARE_COUNT_B: // 流通B股
case SLH_SHARE_COUNT_H: // 流通H股
case SLH_SHARE_COUNT_NATIONAL: // 国有股
case SLH_SHARE_COUNT_CORP: // 法人股
if( AfxGetVariantValue( nVariantID, info, &dTemp, pContainer ) )
strTemp.Format( "%.0f", dTemp );
break;
case SLH_MAIN_INCOME: // 主营业务收入
case SLH_ASSET: // 总资产
case SLH_NET_PROFIT: // 净利润
case SLH_MAIN_PROFIT: // 主营业务利润
case SLH_TOTAL_PROFIT: // 利润总额
if( AfxGetVariantValue( nVariantID, info, &dTemp, pContainer ) )
strTemp.Format( "%.0f", dTemp );
break;
case SLH_REPORTTYPE: // 报表类型
strTemp = AfxGetReportTypeString( info.m_reporttype );
break;
case SLH_TRADE: // 行业
strTemp = info.GetStockDomain();
break;
case SLH_PROVINCE: // 省份
strTemp = info.GetStockProvince();
break;
default:
if( AfxGetVariantValue( nVariantID, info, &dTemp, pContainer ) )
strTemp.Format( "%.2f", dTemp );
}
if( strTemp.IsEmpty() )
strTemp = "-";
return strTemp;
}
COLORREF AfxGetVariantColor( UINT nVariantID, CStockInfo &info )
{
int x = 0;
double dTemp = 0;
COLORREF crText = AfxGetProfile().GetColor(CColorClass::clrPlane);
if( nVariantID < SLH_MIN || nVariantID > SLH_MAX )
return crText;
switch( nVariantID )
{
case SLH_CODE: // 股票代码
crText = AfxGetProfile().GetColor(CColorClass::clrTitle);
break;
case SLH_NAME: // 股票名称
crText = AfxGetProfile().GetColor(CColorClass::clrTitle);
break;
case SLH_OPEN: // 今开
if( info.m_fOpen > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fOpen < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_CLOSE: // 收盘价
if( info.m_fClose > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fClose < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_HIGH: // 最高价
if( info.m_fHigh > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fHigh < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_LOW: // 最低价
if( info.m_fLow > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fLow < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_AVERAGE: // 均价
if( info.GetAverage( &dTemp ) )
{
if( dTemp - info.m_fLast > 1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( dTemp - info.m_fLast < -1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
}
break;
case SLH_DIFF: // 涨跌
if( info.GetDiff( &dTemp, info.m_datetech, AfxGetProfile().GetDiffPercentDays() ) )
{
if( dTemp > 1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( dTemp < -1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
}
break;
case SLH_DIFFPERCENT: // 涨幅
if( info.GetDiffPercent( &dTemp, info.m_datetech, AfxGetProfile().GetDiffPercentDays() ) )
{
if( dTemp > 1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( dTemp < -1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
}
break;
case SLH_VOLUME: // 成交量
crText = AfxGetProfile().GetColor(CColorClass::clrText);
break;
case SLH_AMOUNT: // 成交额
crText = AfxGetProfile().GetColor(CColorClass::clrText);
break;
case SLH_VOLUP: // 外盘
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
break;
case SLH_VOLDOWN: // 内盘
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_DIFFPERCENT_MIN5: // 五分钟涨幅%
if( info.GetDiffPercentMin5( &dTemp ) )
{
if( dTemp > 1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( dTemp < -1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
}
break;
case SLH_SELLBUYRATIO: // 委比%
case SLH_SELLBUYDIFF: // 委量差
if( info.GetSellBuyRatio( &dTemp, NULL ) )
{
if( dTemp > 1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( dTemp < -1e-4 )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
}
break;
case SLH_BUYPRICE3: // 买价三
if( info.m_fBuyPrice[2] > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fBuyPrice[2] < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_BUYPRICE2: // 买价二
if( info.m_fBuyPrice[1] > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fBuyPrice[1] < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_BUYPRICE1: // 买价一
if( info.m_fBuyPrice[0] > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fBuyPrice[0] < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_SELLPRICE1: // 卖价一
if( info.m_fSellPrice[0] > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fSellPrice[0] < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_SELLPRICE2: // 卖价二
if( info.m_fSellPrice[1] > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fSellPrice[1] < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_SELLPRICE3: // 卖价三
if( info.m_fSellPrice[2] > info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrRise);
else if( info.m_fSellPrice[2] < info.m_fLast )
crText = AfxGetProfile().GetColor(CColorClass::clrFall);
break;
case SLH_BUYVOLUME3: // 买量三
case SLH_BUYVOLUME2: // 买量二
case SLH_BUYVOLUME1: // 买量一
case SLH_SELLVOLUME1: // 卖量一
case SLH_SELLVOLUME2: // 卖量二
case SLH_SELLVOLUME3: // 卖量三
case SLH_SCOPE:
crText = AfxGetProfile().GetColor(CColorClass::clrPlane);
break;
// 主要基本指标
case SLH_REPORTTYPE: // 报表类型
crText = AfxGetProfile().GetColor(CColorClass::clrTitle);
break;
case SLH_PE: // 市盈率
case SLH_PNETASSET: // 市净率
case SLH_PMAININCOME: // 市销率
case SLH_RATIO_PCASH: // 价格净现金比
case SLH_RATIO_CURRENCY: // 流通率
case SLH_RATIO_CHANGEHAND: // 换手率
case SLH_RATIO_VOLUME: // 量比
case SLH_RS: // 相对强度
crText = AfxGetProfile().GetColor(CColorClass::clrPlane);
break;
case SLH_MARKETVALUE: // 总市值
case SLH_MARKETVALUEA: // A股市值
case SLH_MARKETVALUEB: // B股市值
crText = AfxGetProfile().GetColor(CColorClass::clrText);
break;
// ★偿债能力
case SLH_RATIO_LIQUIDITY: // 流动比率
case SLH_RATIO_QUICK: // 速动比率
case SLH_VELOCITY_RECEIVABLES: // 应收帐款周率
crText = AfxGetProfile().GetColor(CColorClass::clrPlane);
break;
// ★经营能力
case SLH_VELOCITY_MERCHANDISE: // 存货周转率
crText = AfxGetProfile().GetColor(CColorClass::clrPlane);
break;
case SLH_MAIN_INCOME: // 主营业务收入
case SLH_CASH_PS: // 每股净现金流量
crText = AfxGetProfile().GetColor(CColorClass::clrText);
break;
// ★盈利能力
case SLH_PROFIT_MARGIN: // 主营业务利润率
case SLH_NETASSET_YIELD: // 净资产收益率
crText = AfxGetProfile().GetColor(CColorClass::clrPlane);
break;
// ★资本结构
case SLH_SHARE_COUNT_TOTAL: // 总股本
case SLH_SHARE_COUNT_A: // 流通A股
case SLH_SHARE_COUNT_B: // 流通B股
case SLH_SHARE_COUNT_H: // 流通H股
case SLH_SHARE_COUNT_NATIONAL: // 国有股
case SLH_SHARE_COUNT_CORP: // 法人股
case SLH_PROFIT_PSUD: // 每股未分配利润
case SLH_ASSET: // 总资产
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -