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

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

?? techother.cpp

?? 股票軟件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
	Cross Platform Core Code.

	Copyright(R) 2001-2002 Balang Software.
	All rights reserved.

*/

#include	"StdAfx.h"
#include	"Stock.h"
#include	"Technique.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#ifdef	_DEBUG
#define	new	DEBUG_NEW
#endif

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

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

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

void CREI::SetDefaultParameters( )
{
	m_nDays		=	8;
	m_itsLong	=	ITS_BUY;
	m_itsShort	=	ITS_SELL;
}

void CREI::AttachParameters( CREI & src )
{
	m_nDays		=	src.m_nDays;
	m_itsLong	=	src.m_itsLong;
	m_itsShort	=	src.m_itsShort;
}

BOOL CREI::IsValidParameters( )
{
	return ( VALID_DAYS(m_nDays) && VALID_ITS(m_itsLong) && VALID_ITS(m_itsShort) );
}

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

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

	if( nIndex <= 0 )
		return ITS_NOTHING;

	double	dLast, dNow;
	if( !Calculate( &dLast, nIndex-1, FALSE )
		|| !Calculate( &dNow, nIndex, FALSE ) )
		return ITS_NOTHING;

	if( dLast < -0.6 && dNow > -0.6 )
	{	// 低位做多
		if( pnCode )	*pnCode	=	ITSC_LONG;
		return m_itsLong;
	}
	if( dLast > 0.6 && dNow < 0.6 )
	{	// 高位做空
		if( pnCode )	*pnCode	=	ITSC_SHORT;
		return m_itsShort;
	}

	return	ITS_NOTHING;
}

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

/***
	DIF1 = 今日最高價 - 2日前最高價
	DIF2 = 今日最低價 - 2日前最低價
	A = N日內除滿足以下情況日的(DIF1+DIF2)之和
		1. 2日前最高價 小于 7日前收盤價
		2. 2日前最高價 小于 8日前收盤價
		3. 今日前最高價 小于 5日前最低價
		4. 今日前最高價 小于 6日前最低價
		5. 2日前最低價 小于 7日前收盤價
		6. 2日前最低價 小于 8日前收盤價
		7. 今日前最低價 小于 5日前最高價
		8. 今日前最低價 小于 6日前最高價
	REIA = N日的DIF1絕對值之和 + N日的DIF2絕對值之和
	REI  = A / REIA
*/
BOOL CREI::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	if( m_nDays+7 > nIndex )
		return FALSE;

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

	double	dREI = 0, dREIA = 0;
	int	nCount	=	0;
	for( int k=nIndex; k>=8; k-- )
	{
		double	dDIF1 = 0, dDIF2 = 0;
		int		num1 = 1, num2 = 1;
		dDIF1	=	((double)m_pKData->ElementAt(k).m_fHigh) - m_pKData->ElementAt(k-2).m_fHigh;
		dDIF2	=	((double)m_pKData->ElementAt(k).m_fLow) - m_pKData->ElementAt(k-2).m_fLow;
		if( m_pKData->ElementAt(k-2).m_fHigh < m_pKData->ElementAt(k-7).m_fClose
			&& m_pKData->ElementAt(k-2).m_fHigh < m_pKData->ElementAt(k-8).m_fClose
			&& m_pKData->ElementAt(k).m_fHigh < m_pKData->ElementAt(k-5).m_fLow
			&& m_pKData->ElementAt(k).m_fHigh < m_pKData->ElementAt(k-6).m_fLow )
			num1	=	0;
		if( m_pKData->ElementAt(k-2).m_fLow > m_pKData->ElementAt(k-7).m_fClose
			&& m_pKData->ElementAt(k-2).m_fLow > m_pKData->ElementAt(k-8).m_fClose
			&& m_pKData->ElementAt(k).m_fLow > m_pKData->ElementAt(k-5).m_fHigh
			&& m_pKData->ElementAt(k).m_fLow > m_pKData->ElementAt(k-6).m_fHigh )
			num2	=	0;
		dREI	+=	(dDIF1+dDIF2) * num1 * num2;
		dREIA	+=	fabs(dDIF1) + fabs(dDIF2);

		nCount	++;
		if( nCount == m_nDays )
		{
			if( fabs(dREIA) < 1e-4 )
				return FALSE;
			if( pValue )
				*pValue	=	dREI / dREIA;
			StoreToCache( nIndex, pValue );
			return TRUE;
		}
	}
	
	return FALSE;
}

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

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

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

void CDMKI::SetDefaultParameters( )
{
	m_nDays		=	13;
	m_itsSold	=	ITS_BUY;
	m_itsBought	=	ITS_SELL;
}

void CDMKI::AttachParameters( CDMKI & src )
{
	m_nDays		=	src.m_nDays;
	m_itsSold	=	src.m_itsSold;
	m_itsBought	=	src.m_itsBought;
}

BOOL CDMKI::IsValidParameters( )
{
	return ( VALID_DAYS(m_nDays) && VALID_ITS(m_itsSold) && VALID_ITS(m_itsBought) );
}

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

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

	double	dDMKI;
	if( !Calculate( &dDMKI, nIndex, FALSE ) )
		return ITS_NOTHING;
	if( dDMKI < 0.3 )
	{	// 超賣
		if( pnCode )	*pnCode	=	ITSC_OVERSOLD;
		return m_itsSold;
	}
	if( dDMKI > 0.7 )
	{	// 超買
		if( pnCode )	*pnCode	=	ITSC_OVERBOUGHT;
		return m_itsBought;
	}
	return	ITS_NOTHING;
}

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

/***
	DMH = N日內最高價大于昨日最高價日的 (最高價-昨日最高價)
	DML = N日內最低價小于昨日最低價日的 (昨日最低價-最低價)
	DMKI = DMH / (DMH+DML)
*/
BOOL CDMKI::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	dDMH = 0, dDML = 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( kd.m_fHigh > kdLast.m_fHigh )
			dDMH	+=	(((double)kd.m_fHigh)-kdLast.m_fHigh);
		if( kd.m_fLow < kdLast.m_fLow )
			dDML	+=	(((double)kdLast.m_fLow)-kd.m_fLow);

		nCount	++;
		if( nCount == m_nDays )
		{
			if( fabs(dDMH + dDML) < 1e-4 )
				return FALSE;
			if( pValue )	*pValue	=	dDMH / (dDMH+dDML);
			StoreToCache( nIndex, pValue );
			return TRUE;
		}
	}

	return FALSE;
}

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

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

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

void CPCNT::SetDefaultParameters( )
{
	m_nMADays	=	6;
	m_itsGoldenFork	=	ITS_BUY;
	m_itsDeadFork	=	ITS_SELL;
}

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

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

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

int CPCNT::GetSignal( int nIndex, UINT * pnCode )
{
	if( pnCode )	*pnCode	=	ITSC_NOTHING;
	
	int	nMaxDays	=	m_nMADays;
	double	dLiminalLow = 0, dLiminalHigh = 0;
	if( !IntensityPrepare( nIndex, pnCode, nMaxDays, ITS_GETMINMAXDAYRANGE, &dLiminalLow, &dLiminalHigh, 0.5, 0.5 ) )
		return ITS_NOTHING;

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

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

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

/***
	         今日收盤 - N日前收盤
	PCNT = ———————————— × 100%
	              昨日收盤
*/
BOOL CPCNT::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	if( LoadFromCache( nIndex, pValue ) )
		return TRUE;
	
	int	nDays	=	1;	//	same as ROC with m_nDays==1
	if( nDays > nIndex )
		return FALSE;

	double	dROC = 0;
	if( m_pKData->MaindataAt(nIndex-nDays) <= 0
		|| m_pKData->MaindataAt(nIndex) <= 0 )
		return FALSE;

	double	x	=	m_pKData->MaindataAt(nIndex);
	double	y	=	m_pKData->MaindataAt(nIndex-nDays);
	if( pValue )
		*pValue	=	(x - y) * 100 / y;
	StoreToCache( nIndex, pValue );
	return TRUE;
}

/***
	計算PCNT及其移動平均值
*/
BOOL CPCNT::Calculate( double * pValue, double * pMA, int nIndex, BOOL bUseLast )
{
	return CTechnique::CalculateMA( pValue, pMA, nIndex, bUseLast, m_nMADays );
}

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

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

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

void CHLC::SetDefaultParameters( )
{
	m_nDays		=	12;
	m_nMADays	=	6;
	m_itsGoldenFork	=	ITS_BUY;
	m_itsDeadFork	=	ITS_SELL;
}

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

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

void CHLC::Clear( )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品网站在线观看| 国产精品自拍网站| 色香蕉久久蜜桃| 中文字幕在线不卡一区二区三区| 美脚の诱脚舐め脚责91 | 亚洲电影你懂得| 日本韩国欧美在线| 亚洲国产一区视频| 欧美日韩一区三区四区| 亚洲一二三区在线观看| 欧美精品 日韩| 日本va欧美va瓶| 精品久久久久久久久久久久久久久 | 精品一区二区三区免费毛片爱| 日韩精品专区在线影院观看| 久久国产福利国产秒拍| 久久综合九色综合97_久久久| 国产盗摄一区二区| 国产精品免费视频一区| 欧美三级电影在线看| 久久精品久久精品| 中文字幕欧美一| 欧美日本韩国一区二区三区视频 | 中文字幕一区二区三区不卡| 欧美在线看片a免费观看| 美女免费视频一区二区| 亚洲图片另类小说| 久久网这里都是精品| 色噜噜偷拍精品综合在线| 秋霞影院一区二区| 亚洲少妇30p| 国产欧美一区二区三区鸳鸯浴| 91精彩视频在线观看| 国产福利电影一区二区三区| 亚洲一区二区精品久久av| 欧美激情一区三区| 欧美一级免费大片| 色婷婷av一区二区三区软件| 国产一区二区日韩精品| 日韩国产欧美一区二区三区| 亚洲天堂福利av| 国产精品国产三级国产普通话蜜臀 | 国产乱码精品一区二区三区忘忧草 | 久久99精品久久久| 午夜精品久久久久久久久久久 | 色综合久久综合| 不卡区在线中文字幕| 国产高清不卡一区二区| 久久成人免费网| 国产老肥熟一区二区三区| 亚洲综合丝袜美腿| 亚洲成人免费在线| 亚洲一区二区三区中文字幕| 亚洲天堂2014| 亚洲国产综合视频在线观看| 亚洲精选免费视频| 亚洲一区二区成人在线观看| 亚洲精品伦理在线| 亚洲制服丝袜一区| 青青草成人在线观看| 老司机精品视频线观看86| 国产精品18久久久久久久久久久久| 久久国产综合精品| 成人av网址在线观看| 91国产精品成人| 日韩一区二区三区视频| 国产欧美精品日韩区二区麻豆天美| 久久久激情视频| 亚洲成人动漫精品| 国产综合色视频| 欧美日韩成人综合天天影院| 精品国产欧美一区二区| 亚洲欧美日韩一区| 日韩av一区二区三区四区| 成人av午夜电影| 日韩欧美第一区| 亚洲一二三区在线观看| 成人黄色777网| 欧美一区二区三区四区久久| 中文字幕一区在线观看| 免费在线观看视频一区| 99久久99久久精品免费看蜜桃| 91麻豆精品国产91| 国产精品国产三级国产aⅴ原创 | 亚洲综合丝袜美腿| 成人丝袜视频网| 久久综合久久综合亚洲| 午夜国产精品一区| 91国产视频在线观看| 国产精品国产三级国产专播品爱网| 免费在线观看一区| 欧美日韩卡一卡二| 亚洲一区二区三区四区五区中文 | 日本韩国欧美三级| 国产精品美女久久久久av爽李琼| 成人综合婷婷国产精品久久 | 国产精品综合网| 精品国产一区二区三区av性色 | 亚洲日本成人在线观看| 国产成人免费9x9x人网站视频| 精品第一国产综合精品aⅴ| 青青草国产成人99久久| 精品国产一区二区精华| 国产精品一区二区x88av| 久久久久97国产精华液好用吗| 蜜桃av噜噜一区| 久久综合九色综合久久久精品综合| 国内精品国产成人国产三级粉色| 精品国产一区二区国模嫣然| 国产91精品久久久久久久网曝门| 久久这里只有精品首页| 福利一区福利二区| 亚洲欧美区自拍先锋| 欧美性受极品xxxx喷水| 麻豆精品国产91久久久久久| 欧美v国产在线一区二区三区| 国产一区二区三区美女| 亚洲另类春色校园小说| 日韩免费性生活视频播放| 成人国产精品免费观看视频| 亚洲黄一区二区三区| 精品三级在线看| 在线亚洲+欧美+日本专区| 免费观看91视频大全| 国产精品天天摸av网| 欧美少妇性性性| gogogo免费视频观看亚洲一| 视频一区二区中文字幕| 亚洲视频免费看| 国产三级三级三级精品8ⅰ区| 欧美日韩综合在线| 成人性视频网站| 国产一区二区三区在线观看免费视频| 中文字幕在线免费不卡| 久久色中文字幕| 欧美卡1卡2卡| 欧美系列一区二区| 91在线国产福利| 国产91高潮流白浆在线麻豆| 麻豆免费看一区二区三区| 香蕉乱码成人久久天堂爱免费| 中文字幕精品一区二区三区精品| 日韩精品在线看片z| 日韩一卡二卡三卡四卡| 欧美日韩一卡二卡三卡| 色噜噜偷拍精品综合在线| 一本大道久久a久久综合婷婷 | 久久国产乱子精品免费女| 水野朝阳av一区二区三区| 亚洲制服丝袜av| 亚洲国产综合人成综合网站| 一区二区高清视频在线观看| 亚洲人成影院在线观看| 亚洲一区二区三区四区在线| 亚洲午夜久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩国产欧美在线观看| 九九视频精品免费| 国产麻豆精品在线| www.在线欧美| 欧美日韩一区中文字幕| 精品国产1区2区3区| 国产精品网站导航| 午夜精品久久久久久久久久| 麻豆精品在线观看| 成人a区在线观看| 欧美日韩亚洲综合一区| 日韩精品一区二区三区中文精品| 久久久久99精品一区| 一区二区三区国产精华| 久久精品国产亚洲5555| 99re视频精品| 欧美成人精品高清在线播放| 国产精品蜜臀在线观看| 天天免费综合色| 91亚洲精品一区二区乱码| 欧美精品日日鲁夜夜添| 国产精品伦理在线| 老司机午夜精品| 91精品国产综合久久久蜜臀粉嫩 | 亚洲综合在线视频| 国产精品911| 日韩欧美亚洲国产另类 | 国产日韩欧美不卡| 天堂蜜桃91精品| 色综合久久九月婷婷色综合| 2020国产成人综合网| 开心九九激情九九欧美日韩精美视频电影 | 8v天堂国产在线一区二区| 亚洲情趣在线观看| 成熟亚洲日本毛茸茸凸凹| 久久众筹精品私拍模特| 精品一区二区三区欧美| 日韩精品综合一本久道在线视频| 一区二区三区久久| 色综合av在线| 亚洲国产综合色| 91精品国产综合久久小美女| 偷拍亚洲欧洲综合| 91精品国产麻豆|