亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? techenergy.cpp

?? 股票軟件
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
}

/***
	A = 當天收盤價 - 當天開盤價
	B = 當天最高價 - 當天最低價
	C = A÷B×V(成交量)
	WVAD = 累計n天的C值
*/
BOOL CWVAD::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	if( m_nDays > nIndex+1 )
		return FALSE;

	if( LoadFromCache( nIndex, pValue ) )
		return TRUE;

	int	nCount	=	0;
	double	dResult = 0;
	for( int k=nIndex; k>=0; k-- )
	{
		KDATA	kd	=	m_pKData->ElementAt(k);
		if( kd.m_fHigh > kd.m_fLow )
			dResult	+=	(((double)kd.m_fClose) - kd.m_fOpen)*kd.m_fVolume/(((double)kd.m_fHigh)-kd.m_fLow);

		nCount	++;
		if( nCount == m_nDays )
		{
			if( pValue )	*pValue	=	dResult;
			StoreToCache( nIndex, pValue );
			return TRUE;
		}
	}
	return FALSE;
}

//////////////////////////////////////////////////////////////////////
//	CEMV
CEMV::CEMV( )
{
	SetDefaultParameters( );
}

CEMV::CEMV( CKData * pKData )
	: CTechnique( pKData )
{
	SetDefaultParameters( );
}

CEMV::~CEMV()
{
	Clear( );
}

void CEMV::SetDefaultParameters( )
{
	m_nDays		=	14;
	m_nMADays	=	9;
	m_itsGoldenFork	=	ITS_BUY;
	m_itsGoldenFork	=	ITS_SELL;
}

void CEMV::AttachParameters( CEMV & src )
{
	m_nDays		=	src.m_nDays;
	m_nMADays	=	src.m_nMADays;
	m_itsGoldenFork	=	src.m_itsGoldenFork;
	m_itsDeadFork	=	src.m_itsDeadFork;
}

BOOL CEMV::IsValidParameters( )
{
	return ( VALID_DAYS(m_nDays) && VALID_DAYS(m_nMADays)
		&& VALID_ITS(m_itsGoldenFork) && VALID_ITS(m_itsDeadFork) );
}

void CEMV::Clear( )
{
	CTechnique::Clear( );
}

int CEMV::GetSignal( int nIndex, UINT * pnCode )
{
	if( pnCode )	*pnCode	=	ITSC_NOTHING;

	int	nMaxDays	=	m_nDays+m_nMADays;
	double	dLiminalLow = 0, dLiminalHigh = 0;
	if( !IntensityPrepare( nIndex, pnCode, nMaxDays, ITS_GETMINMAXDAYRANGE, &dLiminalLow, &dLiminalHigh, 0.5, 0.5 ) )
		return ITS_NOTHING;

	double	dEMV;
	if( !Calculate( &dEMV, nIndex, FALSE ) )
		return ITS_NOTHING;

	int	nSignal	=	GetForkSignal( nIndex, m_itsGoldenFork, m_itsDeadFork, pnCode );
	if( dEMV < dLiminalLow && nSignal == m_itsGoldenFork )
	{	// 低位金叉
		if( pnCode )	*pnCode	=	ITSC_GOLDENFORK;
		return m_itsGoldenFork;
	}
	if( dEMV > dLiminalHigh && nSignal == m_itsDeadFork )
	{	// 高位死叉
		if( pnCode )	*pnCode	=	ITSC_DEADFORK;
		return m_itsDeadFork;
	}
	return	ITS_NOTHING;
/*  FROM BOOK */
/*	if( pnCode )	*pnCode	=	ITSC_NOTHING;

	double dValue;
	if( !Calculate( &dValue, nIndex, FALSE ) )
		return ITS_NOTHING;

	if( dValue > 0 )
	{
		if( pnCode )	*pnCode	=	ITSC_LONG;
		return m_itsLong;
	}
	if( dValue < 0 )
	{
		if( pnCode )	*pnCode	=	ITSC_SHORT;
		return m_itsShort;
	}
	
	return	ITS_NOTHING;
*/
}

BOOL CEMV::GetMinMaxInfo(int nStart, int nEnd, double *pdMin, double *pdMax )
{
	return AfxGetMinMaxInfo2( nStart, nEnd, pdMin, pdMax, this );
}

/***
	A = (今天最高 + 今天最低)÷ 2
	B = (前一天最高 + 前一天最低)÷2
	C = 今天最高 - 今天最低
	EM = (A-B)×C÷今天成交額
	EMV = 累計n天的EM值
*/
BOOL CEMV::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	if( m_nDays > nIndex )
		return FALSE;

	if( LoadFromCache( nIndex, pValue ) )
		return TRUE;

	double	dEMV = 0;
	int	nCount	=	0;
	for( int k=nIndex; k>=1; k-- )
	{
		KDATA	kd		=	m_pKData->ElementAt(k);
		KDATA	kdLast	=	m_pKData->ElementAt(k-1);
		if( 0 == kd.m_fVolume )
			return FALSE;
		double	dDIF = 0;
		dDIF	=	(kd.m_fHigh+kd.m_fLow)/2 - (((double)kdLast.m_fHigh)+kdLast.m_fLow)/2;
		dEMV	+=	dDIF * (kd.m_fHigh-kd.m_fLow) / kd.m_fVolume;

		nCount	++;
		if( nCount == m_nDays )
		{
			if( pValue )
				*pValue	=	dEMV / m_nDays;
			StoreToCache( nIndex, pValue );
			return TRUE;
		}
	}

	return FALSE;
}

BOOL CEMV::Calculate( double * pValue, double * pMA, int nIndex, BOOL bUseLast )
{
	return CalculateMA( pValue, pMA, nIndex, bUseLast, m_nMADays );
}

//////////////////////////////////////////////////////////////////////
//	CVRSI
CVRSI::CVRSI( )
{
	SetDefaultParameters( );
}

CVRSI::CVRSI( CKData * pKData )
	: CTechnique( pKData )
{
	SetDefaultParameters( );
}

CVRSI::~CVRSI()
{
	Clear( );
}

void CVRSI::SetDefaultParameters( )
{
	m_nDays		=	10;
	m_itsDeviateOnBottom	=	ITS_BUYINTENSE;
	m_itsDeviateOnTop		=	ITS_SELLINTENSE;
	m_itsSold				=	ITS_BUY;
	m_itsBought				=	ITS_SELL;
}

void CVRSI::AttachParameters( CVRSI & src )
{
	m_nDays		=	src.m_nDays;
	m_itsDeviateOnBottom	=	src.m_itsDeviateOnBottom;
	m_itsDeviateOnTop		=	src.m_itsDeviateOnTop;
	m_itsSold				=	src.m_itsSold;
	m_itsBought				=	src.m_itsBought;
}

BOOL CVRSI::IsValidParameters( )
{
	return ( VALID_DAYS( m_nDays )
		&& VALID_ITS(m_itsDeviateOnBottom) && VALID_ITS(m_itsDeviateOnTop)
		&& VALID_ITS(m_itsSold) && VALID_ITS(m_itsBought) );
}

void CVRSI::Clear( )
{
	CTechnique::Clear( );
}

int CVRSI::GetSignal( int nIndex, UINT * pnCode )
{
	if( pnCode )	*pnCode	=	ITSC_NOTHING;

	int	nMaxDays	=	m_nDays;
	double	dLiminalLow = 0, dLiminalHigh = 0;
	if( !IntensityPrepare( nIndex, pnCode, nMaxDays, ITS_GETMINMAXDAYRANGE, &dLiminalLow, &dLiminalHigh ) )
		return ITS_NOTHING;

	double	dNow;
	if( !Calculate( &dNow, nIndex, FALSE ) )
		return ITS_NOTHING;

	if( IsDeviateOnBottom( nIndex, m_pdCache1, m_pdCache2 ) )
	{	// 底背離
		if( pnCode )	*pnCode	=	ITSC_DEVIATEONBOTTOM;
		return m_itsDeviateOnBottom;
	}
	if( IsDeviateOnTop( nIndex, m_pdCache1, m_pdCache2 ) )
	{	// 頂背離
		if( pnCode )	*pnCode	=	ITSC_DEVIATEONTOP;
		return m_itsDeviateOnTop;
	}
	if( dNow < dLiminalLow )
	{	// 超賣
		if( pnCode )	*pnCode	=	ITSC_OVERSOLD;
		return m_itsSold;
	}
	if( dNow > dLiminalHigh )
	{	// 超買
		if( pnCode )	*pnCode	=	ITSC_OVERBOUGHT;
		return m_itsBought;
	}

	return	ITS_NOTHING;
}

BOOL CVRSI::GetMinMaxInfo(int nStart, int nEnd, double *pdMin, double *pdMax )
{
	if( pdMin )	*pdMin	=	0;
	if( pdMax )	*pdMax	=	100;
	return TRUE;
}

/***
	VP = N日內成交量增加日的平均成交量
	VQ = N日內成交量減少日的平均成交量
	VRSI = 100 * VP / (VP+VQ)
*/
BOOL CVRSI::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	if( m_nDays > nIndex )
		return FALSE;

	if( LoadFromCache( nIndex, pValue ) )
		return TRUE;

	double	dVP = 0, dVQ = 0, dResult = 0;
	int	nCount = 0, p = 0, q = 0;
	for( int k=nIndex; k>=1; k-- )
	{
		if( m_pKData->MaindataAt(k) >= m_pKData->MaindataAt(k-1) )
		{
			dVP	+=	m_pKData->ElementAt(k).m_fVolume;
			p	++;
		}
		else
		{
			dVQ	+=	m_pKData->ElementAt(k).m_fVolume;
			q	++;
		}

		nCount	++;
		if( nCount == m_nDays )
		{
			if( p > 0 )	dVP	=	dVP / p;
			if( q > 0 )	dVQ	=	dVQ / q;
			if( dVQ < 1e-4 )
				dResult	=	100;
			else
				dResult	=	100 - 100. / (1 + dVP / dVQ);
			if( pValue )	*pValue	=	dResult;
			StoreToCache( nIndex, pValue );
			return TRUE;
		}
	}

	return FALSE;
}

//////////////////////////////////////////////////////////////////////
//	CNVRSI
CNVRSI::CNVRSI( )
{
	SetDefaultParameters( );
}

CNVRSI::CNVRSI( CKData * pKData )
	: CVRSI( pKData )
{
	SetDefaultParameters( );
}

CNVRSI::~CNVRSI()
{
	Clear( );
}

/***
	VP = N日內成交量增加日的總成交量
	VQ = N日內成交量減少日的總成交量
	VRSI = 100 * VP / (VP+VQ)
*/
BOOL CNVRSI::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	if( m_nDays > nIndex )
		return FALSE;

	if( LoadFromCache( nIndex, pValue ) )
		return TRUE;

	double	dUV = 0, dV = 0, dResult = 0;
	int	nCount	=	0;
	for( int k=nIndex; k>=1; k-- )
	{
		if( m_pKData->ElementAt(k).m_fVolume > m_pKData->ElementAt(k-1).m_fVolume )
			dUV	+=	m_pKData->ElementAt(k).m_fVolume;
		dV	+=	m_pKData->ElementAt(k).m_fVolume;

		nCount	++;
		if( nCount == m_nDays )
		{
			if( dV < 1e-4 )
				dResult	=	50;
			else
				dResult	=	100. * dUV / dV;
			if( pValue )	*pValue	=	dResult;
			StoreToCache( nIndex, pValue );
			return TRUE;
		}
	}

	return FALSE;
}

//////////////////////////////////////////////////////////////////////
//	CAD
CAD::CAD( )
{
	SetDefaultParameters( );
}

CAD::CAD( CKData * pKData )
	: CTechnique( pKData )
{
	SetDefaultParameters( );
}

CAD::~CAD()
{
	Clear( );
}

void CAD::SetDefaultParameters( )
{
	m_nDays		=	8;
}

void CAD::AttachParameters( CAD & src )
{
	m_nDays		=	src.m_nDays;
}

BOOL CAD::IsValidParameters( )
{
	return ( VALID_DAYS(m_nDays) );
}

void CAD::Clear( )
{
	CTechnique::Clear( );
}

int CAD::GetSignal( int nIndex, UINT * pnCode )
{
	if( pnCode )	*pnCode	=	ITSC_NOTHING;
	// 無買賣信號
	return	ITS_NOTHING;
}

BOOL CAD::GetMinMaxInfo(int nStart, int nEnd, double *pdMin, double *pdMax )
{
	return AfxGetMinMaxInfo1( nStart, nEnd, pdMin, pdMax, this );
}

/***
	A = 當日最高價 - 當日最低價
	B = 2 * 當日收盤價 - 當日最高價 - 當日最低價
	C = 當日成交量 * B / A
	AD = N日內C的總和
*/
BOOL CAD::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	if( m_nDays > nIndex+1 )
		return FALSE;

	if( LoadFromCache( nIndex, pValue ) )
		return TRUE;

	double	dAD = 0;
	int	nCount	=	0;
	for( int k=nIndex; k>=0; k-- )
	{
		KDATA	kd		=	m_pKData->ElementAt(k);

		if( kd.m_fHigh-kd.m_fLow > 1e-4 )
			dAD	+=	kd.m_fVolume * (((double)kd.m_fClose)-kd.m_fLow-kd.m_fHigh+kd.m_fClose)/(((double)kd.m_fHigh)-kd.m_fLow);

		nCount	++;
		if( nCount == m_nDays )
		{
			if( pValue )	*pValue	=	dAD;
			StoreToCache( nIndex, pValue );
			return TRUE;
		}
	}

	return FALSE;
}

//////////////////////////////////////////////////////////////////////
//	CCI
CCI::CCI( )
{
	SetDefaultParameters( );
}

CCI::CCI( CKData * pKData )
	: CTechnique( pKData )
{
	SetDefaultParameters( );
}

CCI::~CCI()
{
	Clear( );
}

void CCI::SetDefaultParameters( )
{
}

void CCI::AttachParameters( CCI & src )
{
}

BOOL CCI::IsValidParameters( )
{
	return TRUE;
}

void CCI::Clear( )
{
	CTechnique::Clear( );
}

int CCI::GetSignal( int nIndex, UINT * pnCode )
{
	if( pnCode )	*pnCode	=	ITSC_NOTHING;
	// 無買賣信號
	return	ITS_NOTHING;
}

BOOL CCI::GetMinMaxInfo(int nStart, int nEnd, double *pdMin, double *pdMax )
{
	return AfxGetMinMaxInfo1( nStart, nEnd, pdMin, pdMax, this );
}

/***
	CI = (當日收盤價 - 當日開盤價)/(當日最高價 - 當日最低價)
*/
BOOL CCI::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );
	
	if( LoadFromCache( nIndex, pValue ) )
		return TRUE;

	KDATA	kd		=	m_pKData->ElementAt(nIndex);
	if( kd.m_fHigh-kd.m_fLow < 1e-4)
		return FALSE;
	double	dCI	=	(((double)kd.m_fClose)-kd.m_fOpen)/(((double)kd.m_fHigh)-kd.m_fLow);
/*
	if( nIndex > 0 )
	{
		KDATA	kdLast	=	m_pKData->ElementAt(nIndex-1);
		if( max(kd.m_fOpen,kd.m_fClose) > kdLast.m_fClose*1.08 && kd.m_fHigh>kdLast.m_fClose)
			dCI	+=	(2.*kd.m_fClose-kd.m_fLow-kdLast.m_fClose)/(((double)kd.m_fHigh)-kdLast.m_fClose);
		if( kd.m_fOpen < kdLast.m_fClose*0.92 )
			dCI	+=	(2.*kd.m_fLow-kd.m_fHigh-kdLast.m_fClose)/(((double)kd.m_fClose)-kd.m_fLow);
	}
*/
	dCI	=	kd.m_fVolume * dCI;
	if( pValue )
		*pValue	=	dCI;
	StoreToCache( nIndex, pValue );
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲综合色| 懂色中文一区二区在线播放| 亚洲已满18点击进入久久| 综合分类小说区另类春色亚洲小说欧美| 欧美一区二区三区日韩| 4438x亚洲最大成人网| 欧美成人午夜电影| 国产精品麻豆久久久| 尤物视频一区二区| 一区二区三区不卡视频| 一区二区三区精密机械公司| 天天综合日日夜夜精品| 久久97超碰色| 成人av在线看| 欧美日韩精品综合在线| 日韩欧美国产精品| 久久精品亚洲精品国产欧美| 综合色天天鬼久久鬼色| 亚洲五码中文字幕| 韩国精品久久久| 99久久国产综合精品麻豆| 欧美日本免费一区二区三区| 日韩欧美在线影院| 国产精品免费丝袜| 午夜在线成人av| 国产乱码精品一区二区三区忘忧草| 99精品视频免费在线观看| 91精品婷婷国产综合久久竹菊| 欧美一级爆毛片| 国产精品少妇自拍| 偷拍亚洲欧洲综合| 国产不卡在线一区| 国产精品白丝在线| 亚洲一区视频在线观看视频| 精品一区二区三区在线观看国产 | 本田岬高潮一区二区三区| caoporm超碰国产精品| 在线欧美小视频| 久久免费国产精品| 亚洲一二三区在线观看| 激情欧美一区二区三区在线观看| 91偷拍与自偷拍精品| 7777精品伊人久久久大香线蕉 | 一区二区三区在线观看国产| 麻豆极品一区二区三区| 91香蕉视频mp4| 精品欧美乱码久久久久久1区2区| 亚洲乱码国产乱码精品精的特点 | 91亚洲精品乱码久久久久久蜜桃| 日韩欧美精品三级| 亚洲天堂成人网| 国产一区二区三区久久久| 在线观看日韩一区| 国产精品久久久久久久久久免费看| 日韩国产一区二| 91在线国内视频| 久久久蜜臀国产一区二区| 天堂av在线一区| 91一区二区三区在线观看| 久久久久99精品国产片| 天天影视涩香欲综合网| 99在线精品视频| 久久这里只有精品视频网| 日韩黄色在线观看| 欧美视频一区二| 136国产福利精品导航| 久久精品国产成人一区二区三区 | 国产精品色一区二区三区| 久久超碰97中文字幕| av午夜精品一区二区三区| 久久久91精品国产一区二区精品| 日韩va欧美va亚洲va久久| 欧美亚洲高清一区| 最新久久zyz资源站| 国产一区二区三区在线观看免费视频| 欧美一区午夜视频在线观看| 一区二区三区日韩在线观看| 97超碰欧美中文字幕| 国产欧美一区在线| 欧美精品视频www在线观看| 亚洲欧美韩国综合色| 成人永久免费视频| 国产日韩v精品一区二区| 国产一区二区在线观看免费| 欧美v国产在线一区二区三区| 日本视频一区二区| 欧美人牲a欧美精品| 午夜私人影院久久久久| 欧美亚洲免费在线一区| 亚洲综合精品自拍| 欧美少妇bbb| 亚洲国产精品一区二区久久恐怖片 | 国产精品免费观看视频| 国产成人免费在线视频| 久久久久久久综合| 精品一区二区三区不卡| 久久综合99re88久久爱| 国产精品一卡二卡在线观看| 2欧美一区二区三区在线观看视频| 人人狠狠综合久久亚洲| 日韩亚洲欧美成人一区| 韩国精品久久久| 久久久久久久久久久黄色| 国产精品一区免费视频| 国产欧美一区二区在线| 99精品久久99久久久久| 亚洲美女区一区| 欧美色图免费看| 蜜桃传媒麻豆第一区在线观看| 日韩免费看的电影| 奇米精品一区二区三区四区| 欧美成人性福生活免费看| 成人av资源在线| 亚洲高清免费观看 | 国产在线精品视频| 亚洲欧美另类图片小说| 91精品国模一区二区三区| 国产suv一区二区三区88区| 亚洲免费三区一区二区| 日韩视频永久免费| 99re这里只有精品6| 日韩专区欧美专区| 国产精品网友自拍| 8v天堂国产在线一区二区| 国产成人精品1024| 日产欧产美韩系列久久99| 国产精品久久三区| 9191国产精品| 97久久精品人人澡人人爽| 美女视频第一区二区三区免费观看网站| 国产日韩综合av| 91精品国产91久久久久久最新毛片| 北条麻妃一区二区三区| 久久国产乱子精品免费女| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩一区二区三区四区| 色婷婷综合久久久| 成人综合在线视频| 久久国产福利国产秒拍| 亚洲高清免费在线| 色av综合在线| 国产精品亚洲人在线观看| 日韩av一二三| 亚洲制服欧美中文字幕中文字幕| 久久久噜噜噜久噜久久综合| 91精品国产91综合久久蜜臀| 色婷婷一区二区三区四区| 国产成a人亚洲精品| 九九久久精品视频| 日韩在线一二三区| 亚洲人成亚洲人成在线观看图片| 国产亚洲精品中文字幕| 欧美大片在线观看| 欧美另类z0zxhd电影| 在线观看免费一区| 91麻豆免费看| 成人av资源下载| 国产不卡免费视频| 国产在线精品不卡| 天天操天天干天天综合网| 一区二区三区四区中文字幕| 亚洲国产精华液网站w| 欧美精品一区二区在线播放| 欧美一卡二卡三卡| 欧美日韩国产高清一区二区| 欧美系列在线观看| 91福利在线导航| 91免费在线视频观看| 99久久久久免费精品国产| youjizz国产精品| 成人毛片老司机大片| 国产91丝袜在线播放| 国产69精品久久久久毛片| 国产高清不卡二三区| 国产资源精品在线观看| 经典三级视频一区| 国产主播一区二区三区| 久草精品在线观看| 国产一区二区三区免费在线观看| 国产一区二区三区免费播放| 精品综合免费视频观看| 经典三级一区二区| 国产乱人伦偷精品视频不卡| 狠狠狠色丁香婷婷综合激情| 狠狠色丁香久久婷婷综| 国产精品一二三四| 丁香激情综合五月| 93久久精品日日躁夜夜躁欧美| 99精品视频在线播放观看| 一本到不卡免费一区二区| 91福利精品第一导航| 欧美日韩精品免费| 欧美精品久久久久久久久老牛影院| 在线播放中文一区| 日韩精品一区二区三区老鸭窝| 久久亚洲影视婷婷| 亚洲欧洲国产日本综合| 亚洲欧美日韩国产手机在线| 亚洲主播在线播放| 美女mm1313爽爽久久久蜜臀|