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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? techuser.cpp

?? 股票軟件
?? CPP
字號(hào):
/*
	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

//////////////////////////////////////////////////////////////////////
//	CTechUserDrv

class CTechUserDrv
{
public:
	CTechUserDrv();
	~CTechUserDrv();

	BOOL	LoadDriver( );

	UINT	GetTechUserCount( );
	BOOL	GetTechUserInfo( UINT nID, PTECHUSER_INFO pInfo );
	BOOL	Calculate( UINT nID, PCALCULATE_INFO pInfo );
	int		GetSignal( UINT nID, PCALCULATE_INFO pInfo );

protected:
	UINT	(WINAPI * m_pfnGetTechUserCount)( );
	BOOL	(WINAPI * m_pfnGetTechUserInfo)( UINT nID, PTECHUSER_INFO pInfo );
	BOOL	(WINAPI * m_pfnCalculate)( UINT nID, PCALCULATE_INFO pInfo );
	int		(WINAPI * m_pfnGetSignal)( UINT nID, PCALCULATE_INFO pInfo );
	HINSTANCE	m_hDrv;
};

CTechUserDrv & GetTechUserDrv( )
{
	static	CTechUserDrv	g_techuserdrv;
	g_techuserdrv.LoadDriver( );
	return g_techuserdrv;
}

CTechUserDrv::CTechUserDrv()
{
	m_pfnGetTechUserCount	=	NULL;
	m_pfnGetTechUserInfo	=	NULL;
	m_pfnCalculate			=	NULL;
	m_pfnGetSignal			=	NULL;
	m_hDrv					=	NULL;
}

CTechUserDrv::~CTechUserDrv()
{
#ifdef	SP_WINDOWS
	if( m_hDrv )
		FreeLibrary( m_hDrv );
#endif
	m_pfnGetTechUserCount	=	NULL;
	m_pfnGetTechUserInfo	=	NULL;
	m_pfnCalculate			=	NULL;
	m_pfnGetSignal			=	NULL;
	m_hDrv					=	NULL;
}

BOOL CTechUserDrv::LoadDriver( )
{
#ifdef	SP_WINDOWS
	if( !m_hDrv )
	{
		m_hDrv = ::LoadLibrary( "StkTech.dll" );
		if( m_hDrv )
		{
			m_pfnGetTechUserCount	= (UINT (WINAPI *)())GetProcAddress(m_hDrv,"_GetTechUserCount@0");
			m_pfnGetTechUserInfo	= (BOOL (WINAPI *)(UINT,PTECHUSER_INFO))GetProcAddress(m_hDrv,"_GetTechUserInfo@8");
			m_pfnCalculate			= (BOOL (WINAPI *)(UINT,PCALCULATE_INFO))GetProcAddress(m_hDrv,"_Calculate@8");
			m_pfnGetSignal			= (int (WINAPI *)(UINT,PCALCULATE_INFO))GetProcAddress(m_hDrv,"_GetSignal@8");
			if( !m_pfnGetTechUserCount )
				m_pfnGetTechUserCount	= (UINT (WINAPI *)())GetProcAddress(m_hDrv,"GetTechUserCount");
			if( !m_pfnGetTechUserInfo )
				m_pfnGetTechUserInfo	= (BOOL (WINAPI *)(UINT,PTECHUSER_INFO))GetProcAddress(m_hDrv,"GetTechUserInfo");
			if( !m_pfnCalculate )
				m_pfnCalculate			= (BOOL (WINAPI *)(UINT,PCALCULATE_INFO))GetProcAddress(m_hDrv,"Calculate");
			if( !m_pfnGetSignal )
				m_pfnGetSignal			= (int (WINAPI *)(UINT,PCALCULATE_INFO))GetProcAddress(m_hDrv,"GetSignal");
		}
	}
#endif
	
	return NULL != m_hDrv;
}

UINT CTechUserDrv::GetTechUserCount( )
{
	if( !m_pfnGetTechUserCount )
		return 0;
	return( (*m_pfnGetTechUserCount)());
}

BOOL CTechUserDrv::GetTechUserInfo( UINT nID, PTECHUSER_INFO pInfo )
{
	if( !m_pfnGetTechUserInfo )
		return FALSE;
	return( (*m_pfnGetTechUserInfo)(nID-STT_USER_MIN,pInfo));
}

BOOL CTechUserDrv::Calculate( UINT nID, PCALCULATE_INFO pInfo )
{
	if( !m_pfnCalculate )
		return FALSE;
	return( (*m_pfnCalculate)(nID-STT_USER_MIN,pInfo));
}

int CTechUserDrv::GetSignal( UINT nID, PCALCULATE_INFO pInfo )
{
	if( !m_pfnCalculate )
		return ITS_NOTHING;
	return( (*m_pfnGetSignal)(nID-STT_USER_MIN,pInfo));
}

//////////////////////////////////////////////////////////////////////
//	CTechUser

//  static functions
UINT	CTechUser::GetTechUserCount()
{
	return GetTechUserDrv().GetTechUserCount();
}

CSPString CTechUser::GetTechUserName( int nTech )
{
	TECHUSER_INFO	info;
	memset( &info, 0, sizeof(info) );
	info.m_nStructSize	=	sizeof(info);
	if( GetTechUserDrv().GetTechUserInfo( nTech, &info ) )
		return info.m_szName;
	return "";
}

CSPString CTechUser::GetTechUserShortName( int nTech )
{
	TECHUSER_INFO	info;
	memset( &info, 0, sizeof(info) );
	info.m_nStructSize	=	sizeof(info);
	if( GetTechUserDrv().GetTechUserInfo( nTech, &info ) )
		return info.m_szShortName;
	return "";
}

CTechUser::CTechUser( )
{
	SetDefaultParameters( );
}

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

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

BOOL CTechUser::SetTechUserID( int nTechUserID )
{
	m_nTechUserID	=	nTechUserID;
	if( m_nTechUserID >= STT_USER_MIN
		&& m_nTechUserID-STT_USER_MIN<CTechUser::GetTechUserCount() )
		return GetTechUserDrv().GetTechUserInfo( m_nTechUserID, &m_techuserinfo );
	return FALSE;
}

UINT CTechUser::GetTechUserID( )
{
	return m_nTechUserID;
}

void CTechUser::SetStock( CStock * pStock )
{
	m_pStock	=	pStock;
}

UINT CTechUser::GetLineCount( )
{
	if( 1 == m_techuserinfo.m_nLineCount && m_techuserinfo.m_bAutoMA )
		return 2;
	return m_techuserinfo.m_nLineCount;
}

CSPString CTechUser::GetLineName( int nLine )
{
	switch( nLine )
	{
	case 1:		return m_techuserinfo.m_aszLineName[0];
	case 2:
		if( 1 == m_techuserinfo.m_nLineCount && m_techuserinfo.m_bAutoMA )
			return "MA";
		return m_techuserinfo.m_aszLineName[1];
	case 3:		return m_techuserinfo.m_aszLineName[2];
	case 4:		return m_techuserinfo.m_aszLineName[3];
	case 5:		return m_techuserinfo.m_aszLineName[4];
	default:;
	}
	return "";
}

void CTechUser::SetDefaultParameters( )
{
	m_nTechUserID	=	-1;
	memset( &m_techuserinfo, 0, sizeof(m_techuserinfo) );
}

void CTechUser::AttachParameters( CTechUser & src )
{
	m_nTechUserID	=	src.m_nTechUserID;
	memcpy( &m_techuserinfo, &(src.m_techuserinfo), sizeof(m_techuserinfo) );
}

BOOL CTechUser::IsValidParameters( )
{
	return ( m_nTechUserID >= STT_USER_MIN
		&& m_nTechUserID-STT_USER_MIN<CTechUser::GetTechUserCount() );
}

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

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

	if( ( m_techuserinfo.m_nLineCount == 2 || (m_techuserinfo.m_nLineCount == 1 && m_techuserinfo.m_bAutoMA ) )
		&& ( ITS_NOTHING != m_techuserinfo.m_itsGoldenFork || ITS_NOTHING != m_techuserinfo.m_itsDeadFork ) )
	{
		int	nMaxDays	=	0;
		if( m_techuserinfo.m_nLineCount == 1 && m_techuserinfo.m_bAutoMA )
			nMaxDays	=	m_techuserinfo.m_nMADays;
		double	dLiminalLow = 0, dLiminalHigh = 0;
		if( !IntensityPrepare( nIndex, pnCode, nMaxDays, ITS_GETMINMAXDAYRANGE, &dLiminalLow, &dLiminalHigh, 0.3, 0.7 ) )
			return ITS_NOTHING;

		if( nIndex <= 1 )
			return ITS_NOTHING;

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

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

	CALCULATE_INFO	info;
	memset( &info, 0, sizeof(info) );
	info.m_nStructSize	=	sizeof(info);
	info.m_pStock		=	m_pStock;
	info.m_pStockInfo	=	&(m_pStock->GetStockInfo());
	info.m_pKData		=	m_pKData;
	info.m_nIndex		=	nIndex;
	int nSignal = ITS_NOTHING;
	if( GetTechUserDrv().GetSignal( m_nTechUserID, &info ) )
	{
		nSignal	=	info.m_nSignal;
		if( nSignal > ITS_NOTHING && pnCode )
			*pnCode	=	ITSC_LONG;
		if( nSignal < ITS_NOTHING && pnCode )
			*pnCode	=	ITSC_SHORT;
	}
	return nSignal;
}

// 得到趨勢(shì)信號(hào)
int CTechUser::GetIntensity( int nIndex, UINT * pnCode, BOOL bTraceBack )
{
	return CTechnique::GetIntensity( nIndex, pnCode, bTraceBack );
}

int CTechUser::GetIntensityTraceback( int nIndex, UINT * pnCode )
{
	return CTechnique::GetIntensityTraceback( nIndex, pnCode );
}

BOOL CTechUser::GetMinMaxInfo(int nStart, int nEnd,
				   double *pdMin, double *pdMax )
{
	switch( m_techuserinfo.m_nLineCount )
	{
	case 1:
		return AfxGetMinMaxInfo1( nStart, nEnd, pdMin, pdMax, this );
	case 2:
		return AfxGetMinMaxInfo2( nStart, nEnd, pdMin, pdMax, this );
	case 3:
		return AfxGetMinMaxInfo3( nStart, nEnd, pdMin, pdMax, this );
	case 4:
		return AfxGetMinMaxInfo4( nStart, nEnd, pdMin, pdMax, this );
	case 5:
		return AfxGetMinMaxInfo5( nStart, nEnd, pdMin, pdMax, this );
	default:;
	}
	return FALSE;
}

BOOL CTechUser::Calculate( double * pValue, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	SP_ASSERT( 1 == m_techuserinfo.m_nLineCount );
	if( 1 != m_techuserinfo.m_nLineCount )
		return FALSE;

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

	CALCULATE_INFO	info;
	memset( &info, 0, sizeof(info) );
	info.m_nStructSize	=	sizeof(info);
	info.m_pStock		=	m_pStock;
	info.m_pStockInfo	=	&(m_pStock->GetStockInfo());
	info.m_pKData		=	m_pKData;
	info.m_nIndex		=	nIndex;
	info.m_bUseLast		=	bUseLast;
	if( bUseLast )
		info.m_dValue1	=	*pValue;
	if( !GetTechUserDrv().Calculate( m_nTechUserID, &info ) )
		return FALSE;

	if( pValue )
		*pValue	=	info.m_dValue1;
	StoreToCache( nIndex, pValue );
	return TRUE;
}

BOOL CTechUser::Calculate( double * pValue1, double * pValue2, int nIndex, BOOL bUseLast )
{
	if( 1 == m_techuserinfo.m_nLineCount && m_techuserinfo.m_bAutoMA )
		return CalculateMA( pValue1, pValue2, nIndex, bUseLast, m_techuserinfo.m_nMADays );

	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	SP_ASSERT( 2 == m_techuserinfo.m_nLineCount );
	if( 2 != m_techuserinfo.m_nLineCount )
		return FALSE;

	if( LoadFromCache( nIndex, pValue1, pValue2 ) )
		return TRUE;

	CALCULATE_INFO	info;
	memset( &info, 0, sizeof(info) );
	info.m_nStructSize	=	sizeof(info);
	info.m_pStock		=	m_pStock;
	info.m_pStockInfo	=	&(m_pStock->GetStockInfo());
	info.m_pKData		=	m_pKData;
	info.m_nIndex		=	nIndex;
	info.m_bUseLast		=	bUseLast;
	if( bUseLast )
	{
		info.m_dValue1	=	*pValue1;
		info.m_dValue2	=	*pValue2;
	}
	if( !GetTechUserDrv().Calculate( m_nTechUserID, &info ) )
		return FALSE;

	if( pValue1 )	*pValue1	=	info.m_dValue1;
	if( pValue2 )	*pValue2	=	info.m_dValue2;
	StoreToCache( nIndex, pValue1, pValue2 );
	return TRUE;
}

BOOL CTechUser::Calculate( double * pValue1, double * pValue2, double * pValue3, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	SP_ASSERT( 3 == m_techuserinfo.m_nLineCount );
	if( 3 != m_techuserinfo.m_nLineCount )
		return FALSE;

	if( LoadFromCache( nIndex, pValue1, pValue2, pValue3 ) )
		return TRUE;

	CALCULATE_INFO	info;
	memset( &info, 0, sizeof(info) );
	info.m_nStructSize	=	sizeof(info);
	info.m_pStock		=	m_pStock;
	info.m_pStockInfo	=	&(m_pStock->GetStockInfo());
	info.m_pKData		=	m_pKData;
	info.m_nIndex		=	nIndex;
	info.m_bUseLast		=	bUseLast;
	if( bUseLast )
	{
		info.m_dValue1	=	*pValue1;
		info.m_dValue2	=	*pValue2;
		info.m_dValue3	=	*pValue3;
	}
	if( !GetTechUserDrv().Calculate( m_nTechUserID, &info ) )
		return FALSE;

	if( pValue1 )	*pValue1	=	info.m_dValue1;
	if( pValue2 )	*pValue2	=	info.m_dValue2;
	if( pValue3 )	*pValue3	=	info.m_dValue3;
	StoreToCache( nIndex, pValue1, pValue2, pValue3 );
	return TRUE;
}

BOOL CTechUser::Calculate( double * pValue1, double * pValue2, double * pValue3, double *pValue4, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	SP_ASSERT( 4 == m_techuserinfo.m_nLineCount );
	if( 4 == m_techuserinfo.m_nLineCount )
		return FALSE;

	if( LoadFromCache( nIndex, pValue1, pValue2, pValue3, pValue4 ) )
		return TRUE;

	CALCULATE_INFO	info;
	memset( &info, 0, sizeof(info) );
	info.m_nStructSize	=	sizeof(info);
	info.m_pStock		=	m_pStock;
	info.m_pStockInfo	=	&(m_pStock->GetStockInfo());
	info.m_pKData		=	m_pKData;
	info.m_nIndex		=	nIndex;
	info.m_bUseLast		=	bUseLast;
	if( bUseLast )
	{
		info.m_dValue1	=	*pValue1;
		info.m_dValue2	=	*pValue2;
		info.m_dValue3	=	*pValue3;
		info.m_dValue4	=	*pValue4;
	}
	if( !GetTechUserDrv().Calculate( m_nTechUserID, &info ) )
		return FALSE;

	if( pValue1 )	*pValue1	=	info.m_dValue1;
	if( pValue2 )	*pValue2	=	info.m_dValue2;
	if( pValue3 )	*pValue3	=	info.m_dValue3;
	if( pValue4 )	*pValue4	=	info.m_dValue4;
	StoreToCache( nIndex, pValue1, pValue2, pValue3, pValue4 );
	return TRUE;
}

BOOL CTechUser::Calculate( double * pValue1, double * pValue2, double * pValue3, double *pValue4, double *pValue5, int nIndex, BOOL bUseLast )
{
	STT_ASSERT_CALCULATE1( m_pKData, nIndex );

	SP_ASSERT( 5 == m_techuserinfo.m_nLineCount );
	if( 5 == m_techuserinfo.m_nLineCount )
		return FALSE;

	if( LoadFromCache( nIndex, pValue1, pValue2, pValue3, pValue4, pValue5 ) )
		return TRUE;

	CALCULATE_INFO	info;
	memset( &info, 0, sizeof(info) );
	info.m_nStructSize	=	sizeof(info);
	info.m_pStock		=	m_pStock;
	info.m_pStockInfo	=	&(m_pStock->GetStockInfo());
	info.m_pKData		=	m_pKData;
	info.m_nIndex		=	nIndex;
	info.m_bUseLast		=	bUseLast;
	if( bUseLast )
	{
		info.m_dValue1	=	*pValue1;
		info.m_dValue2	=	*pValue2;
		info.m_dValue3	=	*pValue3;
		info.m_dValue4	=	*pValue4;
		info.m_dValue5	=	*pValue5;
	}
	if( !GetTechUserDrv().Calculate( m_nTechUserID, &info ) )
		return FALSE;

	if( pValue1 )	*pValue1	=	info.m_dValue1;
	if( pValue2 )	*pValue2	=	info.m_dValue2;
	if( pValue3 )	*pValue3	=	info.m_dValue3;
	if( pValue4 )	*pValue4	=	info.m_dValue4;
	if( pValue5 )	*pValue5	=	info.m_dValue5;
	StoreToCache( nIndex, pValue1, pValue2, pValue3, pValue4, pValue5 );
	return TRUE;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人综合在线一区二区| 久久久久久99久久久精品网站| 99久久精品国产网站| 国产成人av福利| 国产成人亚洲综合色影视| 东方欧美亚洲色图在线| 国产91露脸合集magnet| 成人avav影音| 一本色道久久综合亚洲aⅴ蜜桃| 成人亚洲精品久久久久软件| 97久久超碰国产精品| 日本久久精品电影| 精品视频一区二区不卡| 在线播放视频一区| 欧美成人艳星乳罩| 欧美国产激情一区二区三区蜜月| 欧美国产激情二区三区| 亚洲免费色视频| 视频一区二区三区在线| 六月丁香综合在线视频| 国产馆精品极品| 99久久国产综合精品女不卡| 91高清视频免费看| 日韩一级片网站| 欧美国产日本韩| 亚洲精选免费视频| 亚洲福利国产精品| 老司机免费视频一区二区| 国产成人亚洲精品青草天美| 91色视频在线| 欧美精品久久一区二区三区| 精品美女一区二区| 最新中文字幕一区二区三区| 午夜欧美电影在线观看| 九色|91porny| 91在线免费视频观看| 88在线观看91蜜桃国自产| 精品国产污污免费网站入口| 国产精品国产三级国产aⅴ原创| 一区二区免费在线播放| 久久精品国产精品青草| 国产精品毛片高清在线完整版| 一区二区三区**美女毛片| 另类小说综合欧美亚洲| 91在线看国产| 欧美不卡一区二区三区| 亚洲免费资源在线播放| 久久99蜜桃精品| 色屁屁一区二区| 久久蜜桃av一区精品变态类天堂| 悠悠色在线精品| 国产精品亚洲а∨天堂免在线| 91黄色免费网站| 久久久精品一品道一区| 成人在线视频首页| 欧美一区二区三区四区五区 | 欧美日韩免费观看一区二区三区| 精品欧美一区二区三区精品久久| 亚洲日本在线观看| 国产在线观看一区二区| 欧美日韩一区二区三区免费看| 国产午夜精品久久久久久久| 亚洲大型综合色站| 不卡影院免费观看| 欧美xxxxxxxx| 亚欧色一区w666天堂| 成人午夜激情影院| 亚洲精品一区二区三区影院| 午夜欧美一区二区三区在线播放| 成人理论电影网| 亚洲精品在线免费观看视频| 日韩专区在线视频| 色婷婷国产精品| 欧美激情在线一区二区| 蜜桃精品视频在线| 欧美日韩欧美一区二区| 亚洲蜜桃精久久久久久久| 国产精品18久久久久久久网站| 欧美一卡2卡3卡4卡| 国产精品色一区二区三区| 日韩国产欧美在线播放| 日本韩国精品一区二区在线观看| 国产视频一区二区在线观看| 在线观看91精品国产麻豆| 国产精品乱人伦| 国产成人av网站| 久久精品亚洲乱码伦伦中文| 久久av中文字幕片| 日韩欧美国产一区二区三区 | 成人avav影音| 国产欧美日韩精品一区| 国产激情91久久精品导航| 久久久亚洲精品石原莉奈| 免费久久精品视频| 日韩一区二区三区视频在线观看| 午夜精品久久久久久久99樱桃| 在线观看一区日韩| 一区二区三区视频在线观看| 色系网站成人免费| 亚洲免费观看高清完整版在线| 99re8在线精品视频免费播放| 国产精品国产自产拍高清av| www.综合网.com| 亚洲视频一区在线| 波多野结衣中文字幕一区| 亚洲欧洲美洲综合色网| 色妞www精品视频| 一区二区三区中文字幕在线观看| 色久优优欧美色久优优| 一区二区日韩电影| 9191国产精品| 激情综合色播五月| 久久九九影视网| 成人av影视在线观看| 一区二区在线观看免费视频播放| 在线观看成人小视频| 五月天网站亚洲| 日韩女优制服丝袜电影| 国产成人亚洲综合a∨猫咪| 国产精品免费视频观看| 欧洲精品一区二区| 日韩成人精品视频| 久久久久久久久久看片| 99国产精品久久久久| 亚洲一区二区在线观看视频| 9191久久久久久久久久久| 国产一区二区三区精品欧美日韩一区二区三区 | 色婷婷激情久久| 日韩和欧美一区二区| 久久亚区不卡日本| 97久久超碰精品国产| 五月天久久比比资源色| 国产校园另类小说区| 91蜜桃在线观看| 六月丁香婷婷久久| 中文字幕一区不卡| 欧美一区二区三区视频在线| 国产成人免费视频精品含羞草妖精 | 欧美欧美欧美欧美首页| 国产一区在线不卡| 尤物在线观看一区| 欧美精品一区二区高清在线观看| 成人精品高清在线| 天堂久久一区二区三区| 国产日本欧洲亚洲| 欧美日韩不卡视频| 国产成人免费高清| 天天做天天摸天天爽国产一区| 久久影院午夜片一区| 在线观看亚洲精品| 国产剧情av麻豆香蕉精品| 亚洲自拍与偷拍| 久久久.com| 91精品国产欧美日韩| 成人免费毛片a| 奇米一区二区三区av| 亚洲毛片av在线| 国产亚洲人成网站| 欧美一区二区三区在线观看| 91免费观看在线| 国产精品一区二区不卡| 日韩电影免费在线看| 亚洲三级免费电影| 久久久蜜臀国产一区二区| 欧美日韩中文国产| www.性欧美| 韩国毛片一区二区三区| 香蕉成人伊视频在线观看| 国产精品传媒入口麻豆| 精品国产一区久久| 91精品一区二区三区久久久久久 | 久久这里只精品最新地址| 欧美日韩一区中文字幕| thepron国产精品| 国产一区二区三区久久悠悠色av| 天堂在线一区二区| 亚洲精品乱码久久久久久| 国产精品三级电影| 久久久久国产精品麻豆| 欧美一区二区在线看| 欧美亚洲禁片免费| 91啦中文在线观看| a在线欧美一区| 大白屁股一区二区视频| 国产呦萝稀缺另类资源| 免费成人结看片| 日韩国产欧美在线观看| 亚洲成av人片一区二区梦乃 | 色婷婷av一区| 成人app在线观看| 国产成人亚洲综合a∨婷婷图片| 久久99国产精品久久99| 美女网站一区二区| 午夜精品免费在线| 亚洲在线视频免费观看| 亚洲乱码国产乱码精品精的特点| 国产精品国产成人国产三级| 国产日韩成人精品| 日本一区二区三区高清不卡 | 日本伊人色综合网|