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

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

?? strategy.cpp

?? 股票軟件
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
		if( AfxGetStockContainer().GetStockInfo( m_stocks.ElementAt(i), &info ) )
//#ifdef CLKLAN_ENGLISH_US
//			strStock	+=	info.GetStockCode();
//#else
			strStock	+=	info.GetStockName();
//#endif
		else
			strStock	+=	m_stocks.ElementAt(i);
	}
	if( strStock.GetLength() == 0 )
		strStock	=	strategy_noselectedstock;
	else if( m_stocks.GetSize() > nStockShowCount )
		strStock	+=	"...";
	strStock	+=	";    ";

	CSPString	strTech;
	for(  i=0; i<m_anTechsBuy.GetSize() && i<nTechShowCount; i++ )
	{
		if( strTech.GetLength() > 0 )
			strTech	+=	",";
		strTech	+=	AfxGetSTTShortName(m_anTechsBuy[i]);
	}
	if( strTech.GetLength() == 0 )
		strTech	=	strategy_noselectedtech;
	else if( m_anTechsBuy.GetSize() > nTechShowCount )
		strTech	+=	"...";
	
	return strStock + strTech;
}
// 交易費率、操作條件等
CRateParam &	CStrategy::GetRateParam( )			{	return m_rate;			}
COpParam &		CStrategy::GetOpParam( )				{	return m_opparam;		}
CTechParameters & CStrategy::GetTechParametersBuy( )	{	return m_paramBuy;		}
CTechParameters & CStrategy::GetTechParametersSell( )	{	return m_paramSell;		}
CTechParameters & CStrategy::GetTechParametersLongTrend( )	{	return m_paramLongTrend;		}
CTechParameters & CStrategy::GetTechParametersIndexTrend( )	{	return m_paramIndexTrend;		}
CSPDWordArray &	CStrategy::GetSelectedTechsBuy( )		{	return m_anTechsBuy;	}
CSPDWordArray &	CStrategy::GetSelectedTechsSell( )		{	return m_anTechsSell;	}
CSPDWordArray &	CStrategy::GetSelectedTechsLongTrend( )	{	return m_anTechsLongTrend;	}
CSPDWordArray &	CStrategy::GetSelectedTechsIndexTrend( )	{	return m_anTechsIndexTrend;	}

/////////////////////////////////////////////////////////////////////////
// Cache
// 準備數(shù)據(jù),讀取K線數(shù)據(jù),長周期K線數(shù)據(jù),生成技術(shù)指標對象
BOOL CStrategy::PrepareData( SIMULATION_CALLBACK fnCallback, void * cookie )
{
	if( m_techstocks.GetSize() == m_stocks.GetSize() )
		return TRUE;

	ClearCache( );

	// m_techstocks.m_kdataIndex m_techstocks.m_infoIndex
	if( m_opparam.m_bIndexTrend )	// 指數(shù)K線數(shù)據(jù)
	{
		CStockInfo	infoIndex;
		if( AfxGetStockContainer().GetStockInfo( STKLIB_CODE_MAIN, &infoIndex ) )
		{
			m_techstocks.m_infoIndex	=	infoIndex;
			
			CStock	stockIndex;
			stockIndex.SetStockInfo( &infoIndex );
			stockIndex.SetDatabase( &AfxGetDB() );
			stockIndex.PrepareData( CStock::dataK, m_opparam.m_nKTypeIndex );
			CKData	&	kdataIndex		=	stockIndex.GetKData(m_opparam.m_nKTypeIndex);
			kdataIndex.SetMaindataType( m_opparam.m_nMaindataType );
			m_techstocks.m_kdataIndex	=	kdataIndex;

			// m_techstocks.m_techsIndex
			for( int j=0; j<m_anTechsIndexTrend.GetSize(); j++ )
			{
				CTechnique * pTech	=	CTechnique::CreateTechnique( m_anTechsIndexTrend[j], &(m_techstocks.m_kdataIndex) );
				m_paramIndexTrend.FindParameters( m_anTechsIndexTrend[j], pTech );
				m_techstocks.m_techsIndex.Add( pTech );
			}
		}
	}
	
	m_techstocks.SetSize( m_stocks.GetSize() );
	int	nStockCount	=	0;
	for( int i=0; i<m_stocks.GetSize(); i++ )	// 讀取每一只備選股票的數(shù)據(jù)
	{
		CStockInfo	info;
		if( AfxGetStockContainer().GetStockInfo( m_stocks.ElementAt(i), &info ) )
		{
			// CTechStock::m_info;
			CTechStock	temp;
			temp.m_info	=	info;
			
			m_techstocks.SetAt( nStockCount, temp );
			CTechStock & techstock	=	m_techstocks.ElementAt(nStockCount);
			nStockCount	++;
			
			// CTechStock::m_kdata
			CStock	stock;
			stock.SetStockInfo( &info );
			AfxPrepareStockData( &AfxGetDB(), stock, m_opparam.m_nKType, CKData::formatXDRdown, m_opparam.m_nMaindataType, FALSE, FALSE );
			techstock.m_kdata	=	stock.GetKData(m_opparam.m_nKType);

			// CTechStock::m_techs
			techstock.SetAutoDelete( TRUE );
			for( int j=0; j<m_anTechsBuy.GetSize(); j++ )
			{
				CTechnique * pTech	=	CTechnique::CreateTechnique( m_anTechsBuy[j], &(techstock.m_kdata) );
				m_paramBuy.FindParameters( m_anTechsBuy[j], pTech );
				techstock.m_techs.Add( pTech );
			}

			// CTechStock::m_kdataLong
			if( m_opparam.m_bLongTrend )
			{
				AfxPrepareStockData( &AfxGetDB(), stock, m_opparam.m_nKTypeLong, CKData::formatXDRdown, m_opparam.m_nMaindataType, FALSE, FALSE );
				techstock.m_kdataLong	=	stock.GetKData( m_opparam.m_nKTypeLong );

				// CTechStock::m_techsLong
				for( int j=0; j<m_anTechsLongTrend.GetSize(); j++ )
				{
					CTechnique * pTech	=	CTechnique::CreateTechnique( m_anTechsLongTrend[j], &(techstock.m_kdataLong) );
					m_paramLongTrend.FindParameters( m_anTechsLongTrend[j], pTech );
					techstock.m_techsLong.Add( pTech );
				}
			}
		}

		DWORD	dwProgress	=	(DWORD)((i+1)*STRATEGY_MAXF_PROGRESS / m_stocks.GetSize());
		if( fnCallback && !fnCallback( SIMULATION_PROGRESS, dwProgress, NULL, cookie ) )
		{
			ClearCache( );
			nStockCount	=	0;
			break;
		}
	}

	m_techstocks.SetSize( nStockCount );

	if( fnCallback )
		fnCallback( SIMULATION_PROGRESS, STRATEGY_MAX_PROGRESS, NULL, cookie );

	return ( m_techstocks.GetSize() == m_stocks.GetSize() );
}

// 清除每個指標保存的上次趨勢值
void CStrategy::ClearLastIntensity( )
{
	for( int i=0; i<m_techstocks.GetSize(); i++ )
	{
		CTechStock & techstock	=	m_techstocks.ElementAt(i);
			
		for( int nTech=0; nTech<techstock.m_techs.GetSize(); nTech++ )
		{
			CTechnique * pTech	=	(CTechnique *)techstock.m_techs.ElementAt(nTech);
			if( pTech )
				pTech->ClearLastIntensity();
		}
	}
}

void CStrategy::ClearCache( )
{
	m_techstocks.Clear();
}

CTechStockContainer & CStrategy::GetTechStockContainer( )
{
	return m_techstocks;
}

////////////////////////////////////////////////////////////////////////
// Simulation
// 策略模擬:重新設(shè)定
void CStrategy::SimuReset( )
{
	SimuSetStatusInit( );
	m_SimuCurrentTime	=	m_opparam.GetBeginTime( );
	m_SimuCurrentCash	=	m_opparam.m_nStartAmount;
	m_SimuOpRecord.RemoveAll();
	m_SimuNextOp.RemoveAll();
	m_SimuStockOwn.RemoveAll();
	m_SimuAssetSerial.RemoveAll();

	SP_ASSERT( m_opparam.IsValid() );
}
// 策略模擬:進入下一個交易日
BOOL CStrategy::SimuGotoNextTime( )
{
	CSPTime	tmNext;
	if( m_opparam.GetNextTradeTime( m_SimuCurrentTime, tmNext )
		&& m_opparam.IsInTimeZones( tmNext ) )
	{
		m_SimuCurrentTime	=	tmNext;
		return TRUE;
	}
	return FALSE;
}
// 策略模擬:模擬的當前時間
CSPTime CStrategy::SimuGetCurrentTime( )
{
	return m_SimuCurrentTime;
}
// 策略模擬:模擬的當前資金
double CStrategy::SimuGetCurrentCash( )
{
	return m_SimuCurrentCash;
}
// 策略模擬:操作執(zhí)行,bTimeStrict表示是否嚴格遵守計劃時間
BOOL CStrategy::SimuOperate( OPRECORD record, BOOL bTimeStrict )
{
	if( ! m_opparam.IsInTimeZones( record.time ) )
		return FALSE;
	if( bTimeStrict && m_SimuOpRecord.GetSize() > 0 && record.time < m_SimuOpRecord.ElementAt(m_SimuOpRecord.GetSize()-1).time )
		return FALSE;
	CStockInfo	info;
	if( strlen(record.szCode)>0
		&& ( !AfxGetStockContainer().GetStockInfo( record.szCode, &info )
		|| !info.IsValidStock() ) )
		return FALSE;

	double	dAmount		=	record.dwShare * record.dSharePrice;
	double	dRateCost	=	record.dRateCost;
	if( STRATEGY_OPTYPE_BUY == record.lOpType )			// 買入
	{
		if( m_SimuCurrentCash < dAmount+dRateCost )
			return FALSE;
		if( !m_SimuStockOwn.AddStock( info, record.dwShare, record.dSharePrice ) )
			return FALSE;
		m_SimuCurrentCash	-=	(dAmount+dRateCost);
	}
	else if( STRATEGY_OPTYPE_SELL == record.lOpType )	// 賣出
	{
		if( !m_SimuStockOwn.RemoveStock( info, record.dwShare ) )
			return FALSE;
		m_SimuCurrentCash	+=	(dAmount-dRateCost);
	}
	else if( STRATEGY_OPTYPE_ADDSTOCK == record.lOpType )// 添加股票
	{
		if( !m_SimuStockOwn.AddStock( info, record.dwShare, record.dSharePrice ) )
			return FALSE;
	}
	else if( STRATEGY_OPTYPE_REMOVESTOCK == record.lOpType )// 移除股票
	{
		if( !m_SimuStockOwn.RemoveStock( info, record.dwShare ) )
			return FALSE;
	}
	else if( STRATEGY_OPTYPE_ADDCASH == record.lOpType )	// 添加資金
	{
		m_SimuCurrentCash	+=	record.dSharePrice;
	}
	else if( STRATEGY_OPTYPE_REMOVECASH == record.lOpType ) // 移除資金
	{
		if( m_SimuCurrentCash < record.dSharePrice )
			return FALSE;
		m_SimuCurrentCash	-=	record.dSharePrice;
	}
	else
		return FALSE;

	// Record
	m_SimuOpRecord.Add( record );
	return TRUE;
}
// 策略模擬:操作記錄
COpRecordContainer & CStrategy::SimuGetOpRecord( )
{
	return m_SimuOpRecord;
}
// 策略模擬:下一步操作
COpRecordContainer & CStrategy::SimuGetNextOp( )
{
	return m_SimuNextOp;
}
// 策略模擬:當前擁有股票
CStockOwnContainer & CStrategy::SimuGetStockOwn( )
{
	return m_SimuStockOwn;
}
// 策略模擬:總資產(chǎn)序列
CAssetSerialContainer & CStrategy::SimuGetAssetSerial( )
{
	return m_SimuAssetSerial;
}
// 策略模擬:當前進度
DWORD CStrategy::SimuGetCurrentProgress( DWORD dwProgressMax )
{
	return m_opparam.GetProgress( m_SimuCurrentTime, dwProgressMax );
}
// 策略模擬:給定時間的總資產(chǎn)
double CStrategy::SimuGetAsset( CSPTime tmCur )
{
	double	dAsset	=	0;
	if( m_techstocks.GetSumAsset( tmCur, m_SimuStockOwn, &dAsset ) )	// 計算總資產(chǎn)
	{
		dAsset	+=	m_SimuCurrentCash;

		ASSETSERIAL	serial;
		memset( &serial, 0, sizeof(serial) );
		serial.time		=	tmCur.GetTime();
		serial.dAsset	=	dAsset;
		serial.dCash	=	m_SimuCurrentCash;
		m_SimuAssetSerial.SortInsert( serial );
		return dAsset;
	}
	else
	{
		for( int i=m_SimuAssetSerial.GetSize()-1; i>=0; i-- )
		{
			ASSETSERIAL & serial	=	m_SimuAssetSerial.ElementAt(i);
			if( serial.time <= tmCur.GetTime() )
				return serial.dAsset;
		}
	}
	return m_opparam.m_nStartAmount;	// 初始總資產(chǎn)
}
// 策略模擬:當前收益
double CStrategy::SimuGetCurrentYield( )
{
	if( m_opparam.m_nStartAmount > 0 )
		return STRATEGY_BASEF_YIELD * SimuGetAsset(m_SimuCurrentTime) / m_opparam.m_nStartAmount;
	return STRATEGY_BASEF_YIELD;
}
// 策略模擬:當前指數(shù)上漲多少
double CStrategy::SimuGetCurrentYieldIndexPercent( )
{
	CSPTime	sptmBegin( m_opparam.GetBeginTime().GetTime() );
	CSPTime	sptmNow( m_SimuCurrentTime.GetTime() );
	DWORD	dateBegin	=	sptmBegin.ToStockTimeDay();
	DWORD	dateNow		=	sptmNow.ToStockTimeDay();
	
	CKData & kdata	=	AfxGetStockMain().GetKData(m_opparam.m_nKType);
	int	nIndexBegin	=	kdata.GetAboutIndexByDate( dateBegin );
	int	nIndexNow	=	kdata.GetAboutIndexByDate( dateNow );
	if( -1 == nIndexBegin || -1 == nIndexNow )
		return 0;

	if( kdata.ElementAt(nIndexBegin).m_fClose < 1e-4 )
		return 0;

	double	dYield	=	((double)kdata.ElementAt(nIndexNow).m_fClose) - kdata.ElementAt(nIndexBegin).m_fClose;
	dYield	=	dYield / kdata.ElementAt(nIndexBegin).m_fClose;

	return dYield;
}
// 策略模擬:當前收益百分數(shù)
double CStrategy::SimuGetCurrentYieldPercent( )
{
	return ( SimuGetCurrentYield() - STRATEGY_BASEF_YIELD ) / STRATEGY_BASEF_YIELD;
}
// 策略模擬:執(zhí)行下一步操作計劃
BOOL CStrategy::SimuOperateNextop( CSPTime tmCur, COpRecordContainer & nextop, CTechStock & techstock )
{
	for( int j=0; j<nextop.GetSize(); j++ )	// 每個計劃依次執(zhí)行
	{
		OPRECORD &	record	=	nextop.ElementAt(j);
		if( STRATEGY_OPTYPE_BUY != record.lOpType && STRATEGY_OPTYPE_SELL != record.lOpType )
			continue;

		if( tmCur.GetTime() >= record.time
			&& techstock.m_info.IsEqualTo( CStock::marketUnknown, record.szCode ) )
		{
			if( techstock.IsStopTrading(tmCur) )	// 停牌嗎
			{
				CSPTime	tmNext;
				if( m_opparam.GetNextTradeTime(tmCur, tmNext) )
					record.time	=	tmNext.GetTime();	// 下次再執(zhí)行
				continue;
			}

			double	dPriceOK	=	record.dSharePrice;
			if( techstock.GetPriceOK( record.lOpType, tmCur, record.dwShare, record.dSharePrice, &dPriceOK ) )	// 成交價
			{
				record.time			=	tmCur.GetTime();
				record.dSharePrice	=	dPriceOK;
				record.dRateCost	=	record.dwShare * record.dSharePrice * m_rate.GetRate(techstock.m_info);
				SimuOperate( record );
			}
			else if( STRATEGY_OPTYPE_SELL == record.lOpType )	// 如果是賣出而沒有成功,則順延下一個交易日,直至賣出
			{
				CSPTime	tmNext;
				if( m_opparam.GetNextTradeTime(tmCur, tmNext) )
					record.time	=	tmNext.GetTime();
				if( techstock.GetClosePrice(tmCur,&dPriceOK) )
					record.dSharePrice	=	dPriceOK * m_opparam.m_dSellMulti;
				continue;
			}
			nextop.RemoveAt(j);
			j --;
		}
	}
	return TRUE;
}
// 策略模擬:模擬運行
BOOL CStrategy::SimuRun( SIMULATION_CALLBACK fnCallback, void * cookie )
{
	// TIMEZONES
	// 準備數(shù)據(jù)
	if( !PrepareData( fnCallback, cookie ) )
		return FALSE;

	ClearLastIntensity( );

	DWORD	dwShare = 0;		// Temp Data
	double	dSharePrice = 0;	// Temp Data
	CSPTime	tmOp;				// Temp Data

	do	{
		CSPTime	tmCur	=	SimuGetCurrentTime();	// 模擬當前時間

		// Process
		for( int i=0; i<m_techstocks.GetSize(); i++ )	// 每只股票依次判斷
		{
			CTechStock & techstock	=	m_techstocks.ElementAt(i);

			// Operate
			SimuOperateNextop( tmCur, m_SimuNextOp, techstock );	// 執(zhí)行今天的操作計劃

			// Judge Whether to operate, if yes, save to nextop
			STOCKOWN	own;
			memset( &own, 0, sizeof(own) );
			if( m_SimuStockOwn.HasThisStock( techstock.m_info, &own ) )	// 如果已經(jīng)有這支股票,判斷是否賣出
			{
				if( m_techstocks.GetShouldSellShare( techstock, tmCur, own, m_opparam, &tmOp, &dwShare, &dSharePrice ) )
				{	// 如果要賣出,加入下一步操作計劃,下一個交易日執(zhí)行
					m_SimuNextOp.AddRecordUniqueStock( STRATEGY_OPTYPE_SELL, tmOp, techstock.m_info.GetStockCode(), dwShare, dSharePrice, dwShare*dSharePrice*m_rate.GetRate(techstock.m_info) );
				}
			}
			else	// 判斷是否買入
			{
				if( m_techstocks.GetShouldBuyShare( techstock, tmCur, m_SimuCurrentCash, m_rate , m_opparam, m_SimuStockOwn.GetSize(), &tmOp, &dwShare, &dSharePrice )
					&& ( m_SimuStockOwn.GetSize() + m_SimuNextOp.GetBuyRecordCount() < m_opparam.m_nStoreDiv || m_SimuNextOp.HasBuyStock(techstock.m_info.GetStockCode()) ) )
				{	// 如果要買入,加入下一步操作計劃,下一個交易日執(zhí)行
					m_SimuNextOp.AddRecordUniqueStock( STRATEGY_OPTYPE_BUY, tmOp, techstock.m_info.GetStockCode(), dwShare, dSharePrice, dwShare*dSharePrice*m_rate.GetRate(techstock.m_info) );
				}
			}
		}

		// 進度顯示
		DWORD	dwProgress	=	SimuGetCurrentProgress( STRATEGY_MAX_PROGRESS );
		double	dYield		=	SimuGetCurrentYield( );
		if( fnCallback && !fnCallback( SIMULATION_PROGRESS, dwProgress, NULL, cookie ) )
			return FALSE;
		if( fnCallback && !fnCallback( SIMULATION_YIELD, (DWORD)dYield, NULL, cookie ) )
			return FALSE;

	} while( SimuGotoNextTime() );	// 模擬的下一個交易日

	if( fnCallback )
		fnCallback( SIMULATION_PROGRESS, STRATEGY_MAX_PROGRESS, NULL, cookie );
	return TRUE;
}

////////////////////////////////////////////////////////////////////////
// Real
// 策略實戰(zhàn):重新設(shè)定
void CStrategy::RealReset( )
{
	CSPTime	tmLatest	=	CSPTime::GetCurrentTime();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲另类色综合网站| 国产日产欧美一区二区三区| 国产在线观看一区二区| 成人欧美一区二区三区视频网页| 欧美人妇做爰xxxⅹ性高电影| 国产精品综合视频| 五月天中文字幕一区二区| 日本一区二区视频在线| 日韩视频免费观看高清在线视频| 色菇凉天天综合网| 国产黄人亚洲片| 日本va欧美va瓶| 亚洲国产综合视频在线观看| 国产精品免费视频观看| 精品国产乱码久久久久久蜜臀| 91福利视频久久久久| 成人黄色av网站在线| 精品影视av免费| 婷婷丁香久久五月婷婷| 亚洲欧美激情一区二区| 国产欧美1区2区3区| 精品少妇一区二区三区视频免付费 | 日产国产高清一区二区三区| 国产精品国产精品国产专区不蜜 | 欧美精品一区二区三区蜜桃| 欧美日韩精品一区二区三区蜜桃 | 99精品国产一区二区三区不卡| 久久精品国产秦先生| 五月天欧美精品| 亚洲综合精品久久| 亚洲免费观看在线观看| 亚洲欧洲av一区二区三区久久| 久久久噜噜噜久久人人看| 日韩精品一区二区三区在线| 欧美福利一区二区| 7777精品伊人久久久大香线蕉 | 日韩精品三区四区| 亚洲成人第一页| 午夜影院久久久| 亚洲大片免费看| 日韩精品一二区| 美女视频黄a大片欧美| 免费精品视频在线| 激情都市一区二区| 国产一区二区不卡在线| 国产剧情一区在线| 国产成人精品一区二区三区四区 | 91精品国产乱| 欧美一级二级三级蜜桃| 欧美高清视频www夜色资源网| 欧美精品1区2区3区| 欧美精品视频www在线观看 | 日韩精品中文字幕一区| 欧美电影精品一区二区| www国产精品av| 亚洲国产精品t66y| 日韩毛片视频在线看| 亚洲美女电影在线| 亚洲成av人片在线| 看片网站欧美日韩| 懂色av一区二区三区免费观看| 成人性生交大合| 在线观看欧美日本| 91精品免费观看| 久久久另类综合| 亚洲三级理论片| 天天射综合影视| 国模无码大尺度一区二区三区| 国产91色综合久久免费分享| 91浏览器在线视频| 91精品婷婷国产综合久久| 久久久久国产精品人| 亚洲乱码中文字幕综合| 婷婷中文字幕一区三区| 国产精品99久久久久久久女警 | 播五月开心婷婷综合| 欧美主播一区二区三区| 欧美一区二区三区喷汁尤物| 国产亚洲欧美一区在线观看| 亚洲色图欧美在线| 久久精品国产成人一区二区三区| 豆国产96在线|亚洲| 欧美亚洲一区二区在线观看| 欧美成va人片在线观看| 国产精品国产三级国产三级人妇| 亚洲二区视频在线| 国产成人在线视频播放| 欧美午夜不卡在线观看免费| 欧美精品一区二区久久久| 亚洲免费观看高清| 久久99国产精品久久99| 色综合天天综合在线视频| 欧美成人a∨高清免费观看| 亚洲视频在线一区二区| 秋霞国产午夜精品免费视频| 91伊人久久大香线蕉| 精品久久久三级丝袜| 亚洲一区日韩精品中文字幕| 国产自产视频一区二区三区| 欧美日韩一区二区电影| 国产欧美视频一区二区| 日韩成人免费电影| 色妹子一区二区| 国产欧美综合在线观看第十页 | 91免费看视频| 久久久久青草大香线综合精品| 亚洲bt欧美bt精品777| 不卡的电影网站| xfplay精品久久| 日本欧美一区二区三区乱码| 91麻豆精东视频| 国产精品欧美一区二区三区| 久久99最新地址| 51久久夜色精品国产麻豆| 一区二区激情视频| av一区二区不卡| 日本一区二区三区电影| 国产在线精品免费av| 欧美一区二区三区在线看| 亚洲一卡二卡三卡四卡| 99精品视频在线免费观看| 久久久精品黄色| 激情文学综合丁香| 日韩你懂的在线观看| 午夜激情一区二区| 欧美性大战久久久久久久蜜臀| 国产精品美女久久久久aⅴ| 狠狠色狠狠色综合日日91app| 欧美二区乱c少妇| 日本中文一区二区三区| 欧美丰满一区二区免费视频| 亚洲成av人片一区二区梦乃| 欧美少妇一区二区| 亚洲午夜精品网| 欧美私人免费视频| 亚洲国产精品一区二区久久恐怖片| 91女神在线视频| 亚洲精品视频观看| 在线日韩国产精品| 亚洲成精国产精品女| 欧美性生活久久| 水野朝阳av一区二区三区| 欧美日韩不卡一区二区| 午夜精品久久久| 欧美一区二区播放| 久久成人免费日本黄色| 久久女同精品一区二区| 国产精品一区二区三区乱码| 国产色91在线| av日韩在线网站| 亚洲精品va在线观看| 欧美色图激情小说| 日韩精品1区2区3区| 日韩精品一区在线观看| 国产成人一级电影| 国产精品电影一区二区| 色综合久久天天| 午夜久久久久久久久久一区二区| 在线不卡一区二区| 国产真实乱偷精品视频免| 国产精品久久久久毛片软件| 91久久免费观看| 青青草国产精品97视觉盛宴| 精品区一区二区| 粉嫩一区二区三区在线看| 一区二区免费在线播放| 91精品国产免费久久综合| 国产乱色国产精品免费视频| 亚洲欧美日韩国产手机在线| 这里只有精品视频在线观看| 国产老女人精品毛片久久| 一区二区三区在线视频观看| 91精品国产综合久久久蜜臀图片| 国产在线一区观看| 亚洲欧美激情小说另类| 欧美成人官网二区| 92国产精品观看| 免费高清在线一区| 亚洲欧洲日产国码二区| 欧美一区二区免费视频| jvid福利写真一区二区三区| 日韩黄色免费网站| 国产精品天美传媒沈樵| 欧美日韩精品一区二区三区| 国产电影一区在线| 香港成人在线视频| 中文字幕巨乱亚洲| 日韩一区二区视频| 色偷偷久久人人79超碰人人澡| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩vs国产vs欧美| 一区在线中文字幕| 日韩一区二区三区视频在线| 成人av在线资源| 久久99久久久久久久久久久| 亚洲蜜臀av乱码久久精品| 久久夜色精品国产噜噜av| 欧美日韩一区中文字幕| 成人福利视频在线| 国产一区二区电影|