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

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

?? techkline.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

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

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

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

void CKLine::SetDefaultParameters( )
{
}

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

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

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

/***
	得到K線價格的從nStart到nEnd的最小值和最大值
*/
BOOL CKLine::GetMinMaxInfo( int nStart, int nEnd, double *pdMin, double *pdMax )
{
	STT_ASSERT_GETMINMAXINFO( m_pKData, nStart, nEnd );

	double	dMin	=	-1;
	double	dMax	=	1;
	for( int k=nStart; k<=nEnd; k++ )
	{
		KDATA	& kd	=	m_pKData->ElementAt(k);
		if( nStart == k || dMin > kd.m_fLow )	dMin	=	(double)kd.m_fLow;
		if( nStart == k || dMax < kd.m_fHigh )	dMax	=	(double)kd.m_fHigh;
	}
	dMin	-=	fabs(dMin) * 0.01;
	dMax	+=	fabs(dMax) * 0.01;
	if( dMin <= 0 )
		dMin	=	0;
	if( dMax - dMin < 0.03 )
		dMax	=	dMin + 0.03;

	if( pdMin )		*pdMin	=	dMin;
	if( pdMax )		*pdMax	=	dMax;
	return TRUE;
}

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

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

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

void CMA::SetDefaultParameters( )
{
	m_nType	=	typeMA;
	m_adwMADays.RemoveAll();
	m_adwMADays.Add( 5 );
	m_adwMADays.Add( 10 );
	m_adwMADays.Add( 20 );
	m_itsGoldenFork	=	ITS_BUYINTENSE;
	m_itsDeadFork	=	ITS_SELLINTENSE;
	m_itsLong		=	ITS_BUY;
	m_itsShort		=	ITS_SELL;
}

void CMA::AttachParameters( CMA & src )
{
	m_nType	=	src.m_nType;
	m_adwMADays.Copy( src.m_adwMADays );
	m_itsGoldenFork	=	src.m_itsGoldenFork;
	m_itsDeadFork	=	src.m_itsDeadFork;
	m_itsLong		=	src.m_itsLong;
	m_itsShort		=	src.m_itsShort;
}

BOOL CMA::IsValidParameters( )
{
	STT_VALID_DAYSARRAY( m_adwMADays );
	return ( (typeMA == m_nType || typeEXPMA == m_nType)
		&& VALID_ITS(m_itsGoldenFork) && VALID_ITS(m_itsDeadFork)
		&& VALID_ITS(m_itsLong) && VALID_ITS(m_itsShort) );
}

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

int CMA::GetSignal( int nIndex, UINT * pnCode )
{
	// 金叉或者死叉
	int	nSignal	=	GetForkSignal( nIndex, m_adwMADays, m_itsGoldenFork, m_itsDeadFork, pnCode );
	if( ITS_ISBUY(nSignal) || ITS_ISSELL(nSignal) )
		return nSignal;
	// 趨勢
	return GetTrendIntensity( nIndex, m_adwMADays, m_itsLong, m_itsShort, pnCode );
}

BOOL CMA::GetMinMaxInfo(int nStart, int nEnd,
				   double *pdMin, double *pdMax )
{
	return AfxGetMinMaxInfo( nStart, nEnd, pdMin, pdMax, this, m_adwMADays );
}

/***
	兩種:
	1. MA
	    MA = n日收盤價的平均值	
	2. EXPMA
	    EXPMA(1) = CLOSE(1)
		EXPMA(i) = (1-α)EXPMA(i-1) + αCLOSE(i)
		其中 α = 2 / (n+1)
*/
BOOL CMA::Calculate( double * pValue, int nIndex, int nDays, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE( m_pKData, nIndex, nDays );

	int	nCount	=	0;
	if( nDays > nIndex+1 )
		return FALSE;

	double	dResult	=	0;
	int	k = 0;
	switch( m_nType )
	{
	case typeMA:
		return m_pKData->GetMA( pValue, nIndex, nDays );
		break;
	case typeEXPMA:
		if( bUseLast && pValue )
		{
			if( 0 == nIndex )
				dResult	=	m_pKData->MaindataAt(nIndex);
			else
				dResult	=	(*pValue)*(nDays-1)/(nDays+1) + m_pKData->MaindataAt(nIndex) * 2./(nDays+1);
		}
		else
		{
			for( k=0; k<=nIndex; k++ )
			{
				if( 0 == k )
					dResult	=	m_pKData->MaindataAt(k);
				else
					dResult	=	dResult*(nDays-1)/(nDays+1) + m_pKData->MaindataAt(k) * 2./(nDays+1);
			}
		}
		if( pValue )
			*pValue	=	dResult;
		break;
	default:
		SP_ASSERT( FALSE );
	}
	return TRUE;
}

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

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

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

void CBBI::SetDefaultParameters( )
{
	m_nMA1Days	=	3;
	m_nMA2Days	=	6;
	m_nMA3Days	=	12;
	m_nMA4Days	=	24;
	m_itsGoldenFork	=	ITS_BUY;
	m_itsDeadFork	=	ITS_SELL;
}

void CBBI::AttachParameters( CBBI & src )
{
	m_nMA1Days	=	src.m_nMA1Days;
	m_nMA2Days	=	src.m_nMA2Days;
	m_nMA3Days	=	src.m_nMA3Days;
	m_nMA4Days	=	src.m_nMA4Days;
	m_itsGoldenFork	=	src.m_itsGoldenFork;
	m_itsDeadFork	=	src.m_itsDeadFork;
}

BOOL CBBI::IsValidParameters( )
{
	return ( VALID_DAYS( m_nMA1Days ) && VALID_DAYS( m_nMA2Days )
		&& VALID_DAYS( m_nMA3Days ) && VALID_DAYS( m_nMA4Days )
		&& VALID_ITS(m_itsGoldenFork) && VALID_ITS(m_itsDeadFork) );
}

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

int CBBI::GetSignal( int nIndex, UINT * pnCode )
{
	if( pnCode )	*pnCode	=	ITSC_NOTHING;
	if( nIndex <= 0 )
		return ITS_NOTHING;

	double	dLiminalLow = 0, dLiminalHigh = 0;
	if( !IntensityPreparePrice( nIndex, pnCode, 0, ITS_GETMINMAXDAYRANGE, &dLiminalLow, &dLiminalHigh, 0.4, 0.6 ) )
		return ITS_NOTHING;

	double	dBBINow = 0, dBBILast = 0;
	if( !Calculate( &dBBILast, nIndex-1, FALSE )
		|| !Calculate( &dBBINow, nIndex, FALSE ) )
		return ITS_NOTHING;

	double	dNowHigh	=	m_pKData->ElementAt(nIndex).m_fHigh;
	double	dNowLow		=	m_pKData->ElementAt(nIndex).m_fLow;
	double	dNowClose	=	m_pKData->ElementAt(nIndex).m_fClose;
	double	dLastHigh	=	m_pKData->ElementAt(nIndex-1).m_fHigh;
	double	dLastLow	=	m_pKData->ElementAt(nIndex-1).m_fLow;
	double	dLastClose	=	m_pKData->ElementAt(nIndex-1).m_fClose;

	if( dNowClose < dLiminalLow && dLastLow < dBBILast && dNowLow > dBBINow )
	{	// 低位趨勢向上
		if( pnCode )	*pnCode	=	ITSC_GOLDENFORK;
		return m_itsGoldenFork;
	}
	if( dNowClose > dLiminalHigh && dLastHigh > dBBILast && dNowHigh < dBBINow )
	{	// 高位趨勢向下
		if( pnCode )	*pnCode	=	ITSC_DEADFORK;
		return m_itsDeadFork;
	}
	return	ITS_NOTHING;
}

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

/***
	BBI = 4 個 不同日期的MA 的平均值
*/
BOOL CBBI::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	if( LoadFromCache( nIndex, pValue ) )
		return TRUE;
	
	double	dResult	=	0;
	double	dTemp	=	0;

	if( !m_pKData->GetMA( &dTemp, nIndex, m_nMA1Days ) )
		return FALSE;
	dResult	+=	dTemp;

	if( !m_pKData->GetMA( &dTemp, nIndex, m_nMA2Days ) )
		return FALSE;
	dResult	+=	dTemp;

	if( !m_pKData->GetMA( &dTemp, nIndex, m_nMA3Days ) )
		return FALSE;
	dResult	+=	dTemp;

	if( !m_pKData->GetMA( &dTemp, nIndex, m_nMA4Days ) )
		return FALSE;
	dResult	+=	dTemp;

	dResult	=	dResult / 4;
	if( pValue )
		*pValue	=	dResult;

	StoreToCache( nIndex, pValue );
	return TRUE;
}

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

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

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

void CBOLL::SetDefaultParameters( )
{
	m_dMultiUp		=	2;
	m_dMultiDown	=	2;
	m_nMADays		=	20;
	m_itsSupport	=	ITS_BUY;
	m_itsResistance	=	ITS_SELL;
}

void CBOLL::AttachParameters( CBOLL & src )
{
	m_dMultiUp		=	src.m_dMultiUp;
	m_dMultiDown	=	src.m_dMultiDown;
	m_nMADays		=	src.m_nMADays;
	m_itsSupport	=	src.m_itsSupport;
	m_itsResistance	=	src.m_itsResistance;
}

BOOL CBOLL::IsValidParameters( )
{
	return ( m_dMultiUp > 0 && m_dMultiDown > 0 && VALID_DAYS( m_nMADays )
		&& VALID_ITS(m_itsSupport) && VALID_ITS(m_itsResistance) );
}

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

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

	double	dMA = 0, dUp = 0, dDown = 0;
	if( !Calculate( &dMA, &dUp, &dDown, nIndex, FALSE ) )
		return ITS_NOTHING;

	double	dClose	=	m_pKData->ElementAt(nIndex).m_fClose;

	if( dClose < dDown )
	{	// 跌破支撐位
		if( pnCode )	*pnCode	=	ITSC_SUPPORT;
		return m_itsSupport;
	}
	if( dClose > dUp )
	{	// 漲過阻力位
		if( pnCode )	*pnCode	=	ITSC_RESISTANCE;
		return m_itsResistance;
	}
	return	ITS_NOTHING;
}

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

/***
	布林帶是以股價平均線MA為中心線,上方阻力線MA+αSn和下方支撐線MA-αSn之間的帶狀區域
	其中 Sn為n日收盤價的標準差
*/
BOOL CBOLL::Calculate( double * pdMA, double * pdUp, double * pdDown, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );
	
	if( m_nMADays < 2 )
		return FALSE;

	if( LoadFromCache( nIndex, pdMA, pdUp, pdDown ) )
		return TRUE;

	double	dMA = 0, dUp = 0, dDown = 0, dS = 0;

	if( !m_pKData->GetMA( &dMA, nIndex, m_nMADays ) )
		return FALSE;

	int	nCount	=	0;
	for( int k=nIndex; k>=0; k-- )
	{
		dS	+=	(m_pKData->MaindataAt(k) - dMA) * (m_pKData->MaindataAt(k) - dMA);
		nCount	++;
		if( nCount == m_nMADays )
			break;
	}

	dS	=	sqrt( dS / (m_nMADays-1) );

	dUp		=	dMA + m_dMultiUp * dS;
	dDown	=	dMA - m_dMultiDown * dS;
	if( pdMA )		*pdMA	=	dMA;
	if( pdUp )		*pdUp	=	dUp;
	if( pdDown )	*pdDown	=	dDown;

	StoreToCache( nIndex, pdMA, pdUp, pdDown );
	return TRUE;
}

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

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

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

void CPV::SetDefaultParameters( )
{
}

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

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

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

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

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

/***
	PV就是當日成交均價,成交額除以成交量
*/
BOOL CPV::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_fVolume <= 1e-4 || kd.m_fAmount <= 1e-4 )
		return  FALSE;
	
	int		nCount	=	0;
	double	average	=	((double)(kd.m_fAmount)) / kd.m_fVolume;
	while( average < kd.m_fLow && nCount < 10 )	{	average	*=	10;	nCount ++;	}
	while( average > kd.m_fHigh && nCount < 20 )	{	average	/=	10;	nCount ++;	}
	if( average < kd.m_fLow )		//	說明是指數
		average	=	(kd.m_fOpen+kd.m_fHigh+kd.m_fLow+kd.m_fClose)/4;

	double	dPV	=	average;
	if( pValue )
		*pValue	=	dPV;

	StoreToCache( nIndex, pValue );
	return TRUE;
}

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

CSAR::CSAR( CKData * pKData )
	: CTechnique( pKData )
{
	SetDefaultParameters( );

	m_bCurUp	=	m_bFirstUp;
	m_bTurn		=	FALSE;
	m_dCurAF	=	m_dAFStep;
	m_dCurHigh	=	-1;
	m_dCurLow	=	-1;
}

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

void CSAR::SetDefaultParameters( )
{
	m_nInitDays	=	4;
	m_bFirstUp	=	TRUE;
	m_dAFStep	=	0.02;
	m_dAFMax	=	0.2;
	m_itsBuy	=	ITS_BUY;
	m_itsSell	=	ITS_SELL;
}

void CSAR::AttachParameters( CSAR & src )
{
	m_nInitDays	=	src.m_nInitDays;
	m_bFirstUp	=	src.m_bFirstUp;
	m_dAFStep	=	src.m_dAFStep;
	m_dAFMax	=	src.m_dAFMax;
	m_itsBuy	=	src.m_itsBuy;
	m_itsSell	=	src.m_itsSell;
}

BOOL CSAR::IsValidParameters( )
{
	return ( VALID_DAYS(m_nInitDays) && m_bFirstUp >= 0 && m_dAFStep > 0 && m_dAFMax > 0

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品视频自拍| 午夜亚洲国产au精品一区二区| 99视频超级精品| 青青国产91久久久久久| 亚洲欧洲成人av每日更新| 欧美一区二区三区四区久久| av激情亚洲男人天堂| 另类欧美日韩国产在线| 亚洲午夜电影网| 中文无字幕一区二区三区| 正在播放亚洲一区| 色综合av在线| 成人精品视频一区二区三区| 老司机午夜精品| 亚洲成a人片在线不卡一二三区| 国产精品国产三级国产aⅴ中文| 精品久久久久香蕉网| 欧美精品一级二级三级| 在线免费一区三区| 99久久夜色精品国产网站| 韩国精品久久久| 美国欧美日韩国产在线播放| 亚洲高清在线视频| 亚洲精品高清视频在线观看| 日本一区二区三区国色天香| 精品电影一区二区| 日韩欧美国产电影| 欧美一级一区二区| 3d动漫精品啪啪一区二区竹菊| 日本道色综合久久| 色爱区综合激月婷婷| 成a人片亚洲日本久久| 国产精品一二三在| 国内精品伊人久久久久av一坑| 蜜臀a∨国产成人精品| 日本女优在线视频一区二区| 视频在线在亚洲| 午夜精品一区在线观看| 婷婷国产在线综合| 日本少妇一区二区| 麻豆成人免费电影| 麻豆成人久久精品二区三区小说| 日本三级亚洲精品| 久久狠狠亚洲综合| 国产乱对白刺激视频不卡| 国产成人综合精品三级| 国产成人激情av| jlzzjlzz欧美大全| 91麻豆蜜桃一区二区三区| 色综合夜色一区| 欧美午夜精品一区二区蜜桃| 欧美日韩三级视频| 日韩欧美一二区| 久久夜色精品国产噜噜av| 久久精品在线免费观看| 国产精品毛片久久久久久久| 亚洲色图欧美激情| 亚洲成人自拍网| 麻豆91免费看| 国产成人免费在线观看不卡| 91小视频在线观看| 欧美在线一二三四区| 91精品国产综合久久精品| 精品久久人人做人人爽| 国产精品青草综合久久久久99| 亚洲另类在线视频| 天堂va蜜桃一区二区三区漫画版| 美女免费视频一区| 成人一道本在线| 欧美日韩视频不卡| 国产午夜一区二区三区| 亚洲人成7777| 久久国产欧美日韩精品| 成人午夜激情影院| 欧美日韩国产在线观看| 精品国产亚洲一区二区三区在线观看| 国产情人综合久久777777| 伊人性伊人情综合网| 青青草原综合久久大伊人精品| 国产成人aaa| 欧美猛男超大videosgay| 久久久久久久久免费| 一区二区三区中文免费| 老司机精品视频在线| 99热国产精品| 日韩欧美你懂的| 亚洲激情自拍偷拍| 精品一二三四在线| 在线观看日韩高清av| 久久综合中文字幕| 亚洲国产成人高清精品| 成人性生交大合| 日韩一级黄色片| 最新日韩av在线| 久久99九九99精品| 欧美三级乱人伦电影| 国产欧美一区二区精品性色| 午夜天堂影视香蕉久久| 成人国产在线观看| 精品国产一区二区亚洲人成毛片 | 欧美亚洲动漫制服丝袜| 久久丝袜美腿综合| 亚洲一区二区五区| 成人黄色一级视频| 欧美成人a视频| 午夜精品一区在线观看| 99精品久久99久久久久| 精品乱人伦一区二区三区| 亚洲国产精品久久久男人的天堂 | 欧美美女bb生活片| 亚洲精品视频免费观看| 国产成人日日夜夜| 精品久久五月天| 日本视频一区二区| 欧美日韩色综合| 亚洲一区二区三区中文字幕在线| 国产69精品久久99不卡| 精品久久久久av影院 | 99re热视频这里只精品| 久久毛片高清国产| 免费成人在线网站| 欧美丰满美乳xxx高潮www| 亚洲一区二区三区影院| 91视视频在线观看入口直接观看www| 国产视频视频一区| 国产精品一区在线| 精品av综合导航| 久久99精品网久久| 日韩一区二区三区在线| 日本欧美肥老太交大片| 3d成人h动漫网站入口| 午夜久久福利影院| 欧美巨大另类极品videosbest | 中文字幕精品一区二区精品绿巨人 | 欧美揉bbbbb揉bbbbb| 亚洲欧美激情一区二区| 99精品视频在线免费观看| 国产精品久久久久久久久免费桃花 | 欧美精品亚洲一区二区在线播放| 亚洲精品国产精华液| 91久久久免费一区二区| 一区二区三区不卡视频在线观看| 91女厕偷拍女厕偷拍高清| 亚洲视频每日更新| 欧洲生活片亚洲生活在线观看| 夜夜爽夜夜爽精品视频| 欧美日韩一区二区不卡| 日韩中文字幕一区二区三区| 日韩无一区二区| 精品影视av免费| 日本一区二区三区在线不卡| 99精品视频免费在线观看| 亚洲黄网站在线观看| 精品视频一区三区九区| 青青青爽久久午夜综合久久午夜 | 久久网站热最新地址| 国产成人精品影视| 亚洲日本va午夜在线影院| 欧美视频三区在线播放| 蜜桃av噜噜一区| 国产日韩欧美激情| 97精品视频在线观看自产线路二| 亚洲高清免费观看| 久久伊99综合婷婷久久伊| 99麻豆久久久国产精品免费优播| av一本久道久久综合久久鬼色| 中文字幕亚洲成人| 欧美性色综合网| 亚洲精品亚洲人成人网在线播放| 色综合色综合色综合色综合色综合| 一区二区免费在线| 日韩亚洲国产中文字幕欧美| 国产精品一级黄| 一区二区三区中文字幕| 日韩免费看网站| 成人免费看黄yyy456| 一区二区三区在线视频播放| 日韩一二三区视频| 99麻豆久久久国产精品免费优播| 偷拍亚洲欧洲综合| 中文字幕av一区二区三区高| 欧美日韩一区二区在线观看视频 | 99久久99久久免费精品蜜臀| 舔着乳尖日韩一区| 国产精品国产三级国产aⅴ原创| 欧美美女网站色| 99久久er热在这里只有精品15 | 色狠狠综合天天综合综合| 麻豆精品视频在线观看| 亚洲精品国久久99热| 精品1区2区在线观看| 欧美午夜一区二区| 成人一区二区三区视频| 美女精品自拍一二三四| 一区二区成人在线视频| 久久精品欧美日韩精品| 91精品国产欧美一区二区成人| 成人av网站在线| 紧缚捆绑精品一区二区| 洋洋成人永久网站入口|