⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 express.cpp

📁 股软 通达信行情接收接口, 包括美元汇率
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			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 + -