精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用Python代碼識別股票價格圖表模式

開發 前端
在股票市場交易的動態環境中,技術和金融的融合催生了分析市場趨勢和預測未來價格走勢的先進方法。本文將使用Python進行股票模式識別。

在股票市場交易的動態環境中,技術和金融的融合催生了分析市場趨勢和預測未來價格走勢的先進方法。本文將使用Python進行股票模式識別。

from collections import defaultdict
 
 import numpy as np
 import pandas as pd
 import matplotlib.pyplot as plt
 from scipy.signal import argrelextrema
 from statsmodels.nonparametric.kernel_regression import KernelReg
 from yahoofinancials import YahooFinancials

上面的庫中,有幾個要點需要介紹:

collections.defaultdict:當缺少鍵時,返回默認值。使用它可以有效地存儲和組織數據,比如鍵反映日期或資產符號等可識別的度量,值表示相應的變量。

argrelextrema函數是SciPy庫中的一個函數,用于進行科學計算和技術計算。它有助于識別價格數據中的局部最大值和最小值,指示價格數據中的潛在轉折點或支撐位和阻力位。

statsmodels.nonparametric.kernel_regression.KernelReg:這個來自statmodels的子模塊提供了非參數核回歸功能。交易可以使用這種方法來擬合價格數據的平滑曲線,以確定趨勢,無需假設曲線具有特定的參數形式。

YahooFinancials:該模塊從雅虎財經獲取財務數據。我們可以訪問大量的財務數據,包括股票價格,財務報表和其他市場數據,用于分析和決定如何處理投資組合。

start_date = '2017-01-01'
 end_date = '2017-12-31'
 stock_code = 'FB' # e.g. AMZN, GOOG, FB, NVDA

我們獲取的股票數據是在2017-01-01至2017-12-31期間。作為stock_code變量,Facebook, Inc.被設置為FB,即股票的代碼。

在指定的日期范圍內,交易算法將執行該股票代碼的數據分析、交易信號或實際交易等操作。此代碼的目的是為交易算法建立基本參數:目標時間框架和交易的特定股票。

變量最終將在代碼中用于獲取歷史數據、執行財務分析和回溯測試交易策略。對于任何專注于股票市場的交易系統,這些參數是評估歷史表現和執行實時交易的關鍵輸入。

def preprocess_data(start_date, end_date, stock_code):
    stock_data = YahooFinancials(stock_code).get_historical_price_data(start_date, end_date, 'daily')
    price_data = stock_data[stock_code]['prices']
    columns = ['formatted_date', 'open', 'high', 'low', 'close', 'adjclose', 'volume']
    new_columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume']
    df = pd.DataFrame(data=price_data)[columns] # order dataframe columns
    df = df.rename(index=str, columns=dict(zip(columns, new_columns))) # rename dataframe columns
    return df, df['Close'], df['Date']

preprocess_data有三個參數:start_date、end_date和stock_code,它們指定時間范圍和股票類型。此函數的主要目標是從Financials檢索給定股票的指定日期范圍內的歷史股票價格。

獲取包括全面的金融信息,包括每日股票價格、開盤價、最高價和最低價,以及調整后的收盤價。獲得數據后,將其組織到pandas DataFrame中,通過重命名列,可以實現更好的可讀性和與通用財務數據標準的一致性。該函數返回處理后的DataFrame以及兩個Series一維數組,其中包括收盤價和收盤價發生的日期。

df, prices, dates = preprocess_data(start_date, end_date, stock_code)
 prices.index = np.linspace(1, len(prices), len(prices))
 dates.index = np.linspace(1, len(dates), len(dates))

我們為兩組數據(價格和日期)設置索引。然后就是對價格的分析和局部最大值和最小值的識別,這對交易者來說是非常寶貴的。代碼采用了一個核心回歸模型,消除價格的周期性波動,從而更容易發現重要的趨勢。

# https://onlinelibrary.wiley.com/doi/full/10.1111/0022-1082.00265
 # reference: https://www.quantopian.com/posts/an-empirical-algorithmic-evaluation-of-technical-analysis
 def find_max_min(prices):
    model = KernelReg(prices.values, prices.index.values, var_type='c', bw='cv_ls')
    smooth_prices = pd.Series(data=model.fit([prices.index.values])[0], index=prices.index) # index also from 1
 
    # use the minima and maxima from the smoothed timeseries
    # to identify true local minima and maxima in the original timeseres
    # by taking the maximum/minimum price within a t-1, t+1 window in the smoothed timeseries
    smooth_prices_max_indices = argrelextrema(smooth_prices.values, np.greater)[0]
    smooth_prices_min_indices = argrelextrema(smooth_prices.values, np.less)[0]
 
    price_max_indices = []
    for i in smooth_prices_max_indices:
        if 1 < i < len(prices)-1:
            price_max_indices.append(prices.iloc[i-2:i+2].idxmax())
 
    price_min_indices = []
    for i in smooth_prices_min_indices:
        if 1 < i < len(prices)-1:
            price_min_indices.append(prices.iloc[i-2:i+2].idxmin())
         
    price_max = prices.loc[price_max_indices]
    price_min = prices.loc[price_min_indices]
    max_min = pd.concat([price_max, price_min]).sort_index()
    max_min = max_min[~max_min.duplicated()] # deduplicate points that are both maximum and minimum
    max_min
     
    return smooth_prices, smooth_prices_max_indices, smooth_prices_min_indices, \
            price_max_indices, price_min_indices, max_min

用一種算法來識別基于平滑價格數據的價格曲線改變方向的點,代碼在這個平滑的時間序列中搜索相對最大值和最小值。代碼試圖在平滑數據中找到這些極值后,將這些極值映射回原始的非平滑價格數據。

它通過檢查平滑數據中每個極值點周圍的小窗口來實現這一點,并確定該窗口內的價格最高或最低-這些是真正的局部最大值和最小值。在平滑和窗口化處理完成之后,代碼將這些點組織到一個內聚輸出中,刪除可能同時存在于最大值和最小值的任何重復點。

可以使用這個結果來確定交易的進入和退出點。除了在代碼中使用外,該代碼還可以用于更大的策略中,根據這些發現觸發買入或賣出信號。

smooth_prices, smooth_prices_max_indices, smooth_prices_min_indices, \
            price_max_indices, price_min_indices, max_min = find_max_min(prices

smooth_prices包含平滑版本的價格數據,可以消除噪音,使趨勢更容易識別。

有各種各樣的技術可用于平滑,包括移動平均線和其他算法。變量smooth_prices_max_indices和smooth_prices_min_indices可能表示平滑價格指數在局部最大值和最小值列表中的位置。當價格達到這些水平時,在價格反轉之前識別潛在的買入或賣出信號是至關重要的。與前面的變量一樣,price_max_indices和price_min_indices是從原始的、未平滑的價格中計算出來的。

max_min可能是一個數組或列表,其中包含有關已識別的最大值和最小值的信息,可能結合平滑和非平滑數據,用于根據本地價格極值確定是否進入或退出頭寸。可以分析金融價格數據,識別峰值和低谷,并準備數據用于算法交易。作為更大的技術分析系統的一部分,它可以用于基于歷史價格模式的自動交易活動。

下面我們看看上面代碼計算得到的結果:

fig, ax = plt.subplots(figsize=(20,10), dpi=200)
 
 ax.plot(dates, prices, label='Prices')
 ax.plot(dates, smooth_prices, label='Smoothed Prices', linestyle='dashed')
 ax.set_xticks(np.arange(0, len(dates), 30))
     
 smooth_prices_max = smooth_prices.loc[smooth_prices_max_indices]
 smooth_prices_min = smooth_prices.loc[smooth_prices_min_indices]
 price_max = prices.loc[price_max_indices]
 price_min = prices.loc[price_min_indices]
 
 ax.scatter(dates.loc[smooth_prices_max.index], smooth_prices_max.values, s=20, color='red', label='Smoothed Prices Maxima')
 ax.scatter(dates.loc[smooth_prices_min.index], smooth_prices_min.values, s=20, color='purple', label='Smoothed Prices Minima')
 
 ax.scatter(dates.loc[price_max.index], price_max.values, s=50, color='green', label='Prices Maxima')
 ax.scatter(dates.loc[price_min.index], price_min.values, s=50, color='blue', label='Prices Minima')
 ax.legend(loc='upper left')
 ax.grid()

代碼繪制了具有不同線條風格的實際價格和平滑價格。該圖還顯示了實際和平滑價格數據中局部最大值和最小值的位置,可能識別交易進入和退出信號。

為了區分最大值和最小值,使用較大的符號和不同的顏色。時間軸每隔一段時間顯示在x軸上,以使其更清晰。圖表的圖例解釋了情節元素,網格有助于分析價格隨時間的變化,這些都是在繪圖中必不可少的工作。

下面一個函數是Plot_window,它生成一個折線圖,顯示實際價格和平滑價格隨時間的變化。平滑可能有助于識別趨勢并過濾掉噪聲。在這張圖上可以區分出幾個關鍵點。顏色和大小用于識別實際和平滑價格曲線的局部最大值和最小高點和低點。交易策略通常關注這些關鍵點,因為它們可能預示著趨勢的逆轉或繼續。

def plot_window(dates, prices, smooth_prices, 
                smooth_prices_max_indices, smooth_prices_min_indices,
                price_max_indices, price_min_indices, 
                start, end, ax=None):
    if ax is None: fig, ax = plt.subplots(figsize=(20,10), dpi=200)
 
    ax.plot(dates.loc[start:end], prices.loc[start:end], label='Prices')
    ax.plot(dates.loc[start:end], smooth_prices.loc[start:end], label='Smoothed Prices', linestyle='dashed')
    ax.set_xticks(np.linspace(0, len(dates.loc[start:end]), 10))
    ax.tick_params(axis='x', rotatinotallow=45)
 
    smooth_prices_max = smooth_prices.loc[smooth_prices_max_indices].loc[start:end]
    smooth_prices_min = smooth_prices.loc[smooth_prices_min_indices].loc[start:end]
    price_max = prices.loc[price_max_indices].loc[start:end]
    price_min = prices.loc[price_min_indices].loc[start:end]
 
    ax.scatter(dates.loc[smooth_prices_max.index], smooth_prices_max.values, s=20, color='red', label='Smoothed Prices Maxima')
    ax.scatter(dates.loc[smooth_prices_min.index], smooth_prices_min.values, s=20, color='purple', label='Smoothed Prices Minima')
 
    ax.scatter(dates.loc[price_max.index], price_max.values, s=50, color='green', label='Prices Maxima')
    ax.scatter(dates.loc[price_min.index], price_min.values, s=50, color='blue', label='Prices Minima')
    ax.legend(fnotallow='small')
    ax.grid()

可以在較大的數據集中指定一個從開始到結束的時間窗口,這樣可以查看數據的子集。為了清晰起見,在x軸上顯示日期的同時還顯示了一個圖例和一個網格。

plot_window(dates, prices, smooth_prices, 
            smooth_prices_max_indices, smooth_prices_min_indices,
            price_max_indices, price_min_indices, 
            start=18, end=34, ax=None)

圖片

下面我們可以尋找一些簡單的模式:

def find_patterns(max_min):
    patterns = defaultdict(list)
 
    for i in range(5, len(max_min)):
        window = max_min.iloc[i-5:i]
         
        # pattern must play out in less than 36 days
        if window.index[-1] - window.index[0] > 35:
            continue
 
        # Using the notation from the paper to avoid mistakes
        e1, e2, e3, e4, e5 = window.iloc[:5]
        rtop_g1 = np.mean([e1, e3, e5])
        rtop_g2 = np.mean([e2, e4])
         
        # Head and Shoulders
        if (e1 > e2) and (e3 > e1) and (e3 > e5) and \
            (abs(e1 - e5) <= 0.03*np.mean([e1,e5])) and \
            (abs(e2 - e4) <= 0.03*np.mean([e1,e5])):
                patterns['HS'].append((window.index[0], window.index[-1]))
 
        # Inverse Head and Shoulders
        elif (e1 < e2) and (e3 < e1) and (e3 < e5) and \
            (abs(e1 - e5) <= 0.03*np.mean([e1,e5])) and \
            (abs(e2 - e4) <= 0.03*np.mean([e1,e5])):
                patterns['IHS'].append((window.index[0], window.index[-1]))
 
        # Broadening Top
        elif (e1 > e2) and (e1 < e3) and (e3 < e5) and (e2 > e4):
            patterns['BTOP'].append((window.index[0], window.index[-1]))
 
        # Broadening Bottom
        elif (e1 < e2) and (e1 > e3) and (e3 > e5) and (e2 < e4):
            patterns['BBOT'].append((window.index[0], window.index[-1]))
 
        # Triangle Top
        elif (e1 > e2) and (e1 > e3) and (e3 > e5) and (e2 < e4):
            patterns['TTOP'].append((window.index[0], window.index[-1]))
 
        # Triangle Bottom
        elif (e1 < e2) and (e1 < e3) and (e3 < e5) and (e2 > e4):
            patterns['TBOT'].append((window.index[0], window.index[-1]))
 
        # Rectangle Top
        elif (e1 > e2) and (abs(e1-rtop_g1)/rtop_g1 < 0.0075) and \
            (abs(e3-rtop_g1)/rtop_g1 < 0.0075) and (abs(e5-rtop_g1)/rtop_g1 < 0.0075) and \
            (abs(e2-rtop_g2)/rtop_g2 < 0.0075) and (abs(e4-rtop_g2)/rtop_g2 < 0.0075) and \
            (min(e1, e3, e5) > max(e2, e4)):
            patterns['RTOP'].append((window.index[0], window.index[-1]))
 
        # Rectangle Bottom
        elif (e1 < e2) and (abs(e1-rtop_g1)/rtop_g1 < 0.0075) and \
            (abs(e3-rtop_g1)/rtop_g1 < 0.0075) and (abs(e5-rtop_g1)/rtop_g1 < 0.0075) and \
            (abs(e2-rtop_g2)/rtop_g2 < 0.0075) and (abs(e4-rtop_g2)/rtop_g2 < 0.0075) and \
            (max(e1, e3, e5) > min(e2, e4)):
            patterns['RBOT'].append((window.index[0], window.index[-1]))
             
    return patterns

迭代DataFrame中的條目,同時考慮5個數據點。確定每個5點窗口的模式是否在36天內發生。如果沒有,則進入到下一個窗口。我們這里有幾種類型的技術分析圖表模式:

Head and Shoulders(頭肩頂):

這是一種反轉圖表模式,通常表示股價在漲勢中即將反轉。它包括一個中間峰(頭)和兩個較低的峰(肩),形成一個上升趨勢的結束信號。

Inverse Head and Shoulders(倒頭肩底):

與頭肩頂相反,這是一種底部反轉圖表模式。它包括一個中間洼地(倒頭)和兩個較低的洼地(倒肩),形成一個下降趨勢的結束信號。

Broadening Top(擴頂形態):

這是一種表示不穩定市場的圖表模式,由兩個趨勢線分散開來形成。它可能表示市場波動性增加,預示價格的不確定性。

Broadening Bottom(擴底形態):

與擴頂形態相反,這是一種表示不穩定市場的圖表模式,由兩個趨勢線逐漸匯聚。它可能表示市場波動性增加,預示價格的不確定性。

Triangle Top(三角形頂部):

這是一種形成在上升趨勢中的圖表模式,由兩個趨勢線收斂形成三角形。它可能表示價格即將下降。

Triangle Bottom(三角形底部):

與三角形頂部相反,這是一種形成在下降趨勢中的圖表模式,由兩個趨勢線收斂形成三角形。它可能表示價格即將上升。

Rectangle Top(矩形頂部):

這是一種在上升趨勢中形成的圖表模式,由水平線形成一個矩形。它表示市場可能經歷一段橫盤整理,價格可能會下跌。

Rectangle Bottom(矩形底部):

與矩形頂部相反,這是一種在下降趨勢中形成的圖表模式,由水平線形成一個矩形。它表示市場可能經歷一段橫盤整理,價格可能會上升。

上面的這些模式是根據這些局部最大值和最小值的相對位置和值來識別的,檢測到的每個模式都存儲在一個字典中,模式名稱作為鍵,窗口的開始和結束索引作為值。這些索引元組存儲在每個模式末尾的字典中。

這樣的代碼在算法交易中很有用,當它自動檢測與某些市場行為相關的歷史模式時,允許交易者根據這些模式的存在做出明智的決策。

patterns = find_patterns(max_min)
 patterns

上面這些專有名字可能不太容易理解,所以我們可以使用代碼把它們進行可視化

def visualize_patterns(dates, prices, smooth_prices, 
                        smooth_prices_max_indices, smooth_prices_min_indices, 
                        price_max_indices, price_min_indices, 
                        patterns, shorthand_fullname_dict):
    for name, end_day_nums in patterns.items():
        print('Pattern Identified: {} \nNumber of Observations: {}'.format(shorthand_fullname_dict[name], len(end_day_nums)))
        rows = int(np.ceil(len(end_day_nums)/2))
        fig, axes = plt.subplots(rows, 2, figsize=(20,5*rows), dpi=200)
        fig.subplots_adjust(hspace=0.5)
        axes = axes.flatten()
        i = 0
        for start_date, end_date in end_day_nums:
            plot_window(dates, prices, smooth_prices, 
                smooth_prices_max_indices, smooth_prices_min_indices,
                price_max_indices, price_min_indices, 
                start=start_date-1, end=end_date+1, ax=axes[i])
            i += 1
        plt.show()
 visualize_patterns(dates, prices, smooth_prices, 
                        smooth_prices_max_indices, smooth_prices_min_indices, 
                        price_max_indices, price_min_indices, 
                        patterns, shorthand_fullname_dict)

可以看到各種模式是不一樣的,這對我們這些剛入門金融行業的人來說更容易理解。通過圖形化分析股票價格走勢和算法識別模式的工具,可以有助于我們更直觀地理解市場行為隨著時間的推移,這對算法交易至關重要。

責任編輯:華軒 來源: DeepHub IMBA
相關推薦

2020-08-06 16:37:25

機器學習技術股票

2015-11-25 14:03:29

LinuxMop股票

2021-08-19 10:22:03

Python股票編程語言

2017-08-22 17:30:14

Python爬蟲

2021-04-27 08:16:48

勒索軟件攻擊贖金

2024-09-30 05:43:44

2019-04-26 13:26:00

預測股票深度學習股票

2018-04-16 12:14:34

數據科學機器學習神經網絡

2022-06-17 10:37:51

Windows 10Windows 11微軟

2013-12-16 16:57:14

蘋果產品

2013-07-31 09:25:02

云計算30綜合指云計算公共云計算服務

2010-10-18 10:51:00

蘋果

2017-11-02 13:20:08

數據處理PythonNumpy

2015-09-21 09:36:54

20 億代碼谷歌

2011-12-07 09:56:33

SaaS云計算SAP

2018-08-10 15:04:25

2012-11-15 09:29:39

2021-05-16 17:44:08

Python比特幣價格

2013-10-22 10:50:19

百度移動戰略

2022-09-28 10:12:50

Python代碼可視化
點贊
收藏

51CTO技術棧公眾號

国产原创欧美精品| 中文字幕在线精品| 国产黄色特级片| 老司机精品影院| 国产99久久久久久免费看农村| 69av成年福利视频| 日韩亚洲欧美中文字幕| 久久夜色电影| 555www色欧美视频| 久久久999免费视频| 国产在线1区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 成人网在线免费看| 在线观看国产亚洲| 亚洲国产精品91| 亚洲欧美资源在线| 超碰caoprom| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 奇米一区二区三区四区久久| 午夜精品福利在线视频| 国产免费久久| 亚洲第一男人天堂| 肉色超薄丝袜脚交| 午夜av成人| 狠狠久久亚洲欧美专区| 免费cad大片在线观看| av中文字幕一区二区三区| 91网上在线视频| 国产精品乱码视频| 99精品免费观看| 蜜臀久久久久久久| 国产精品成人v| 国产无套丰满白嫩对白| 亚洲国产日本| 久久久久久12| 久草视频免费在线| 欧美一区亚洲| 久久久久北条麻妃免费看| 貂蝉被到爽流白浆在线观看| 国产99精品| 亚洲欧美国产日韩天堂区| 人妻 日韩 欧美 综合 制服| 91蝌蚪精品视频| 欧美一区二区女人| 91性高潮久久久久久久| 中文字幕成人| 91精品免费观看| 亚洲欧美日韩一二三区| 香蕉久久一区| 777欧美精品| 亚洲小视频网站| 亚洲成人a级片| 欧美日韩国产片| 午夜精品中文字幕| 婷婷久久免费视频| 日韩一区二区影院| 少妇欧美激情一区二区三区| 91成人入口| 亚洲国产另类 国产精品国产免费| www.欧美com| 136福利精品导航| 亚洲成avwww人| 天天插天天射天天干| 视频福利一区| 一区二区在线视频| 91视频最新网址| 欧美在线日韩| 久久久久久噜噜噜久久久精品| 日本中文字幕免费| 免费在线欧美黄色| 国产精品久久久久久久久久新婚| 中文字幕制服诱惑| 国产高清精品久久久久| 国产伦精品一区二区三区四区免费 | 久久午夜无码鲁丝片午夜精品| 欧美成人午夜| 91大神福利视频在线| 波多野结衣午夜| 国产在线视视频有精品| 国产 高清 精品 在线 a| 色哟哟在线观看| 国产精品天天看| 性一交一乱一伧国产女士spa| 性欧美18~19sex高清播放| 色婷婷综合久久久中文一区二区| 午夜两性免费视频| 亚洲三区欧美一区国产二区| 精品亚洲一区二区| 小向美奈子av| 夜久久久久久| 国产深夜精品福利| 天天干天天爽天天操| 亚洲国产精品t66y| 免费拍拍拍网站| 韩国精品主播一区二区在线观看 | 五月天久久比比资源色| 黄色一级二级三级| 视频在线亚洲| 在线观看日韩av| 精品无码久久久久| 玖玖精品视频| 99精品国产高清在线观看| 欧美美女搞黄| 亚洲制服丝袜在线| 孩娇小videos精品| 精品国产影院| www.日韩系列| 国产精品999在线观看| 国产一区二区三区久久久| 欧美高清视频一区| 欧美人与动牲性行为| 欧美中文字幕久久| 精品黑人一区二区三区观看时间| 亚洲天堂一区二区三区四区| 国产精品96久久久久久| 成人午夜视频一区二区播放| 中文字幕中文乱码欧美一区二区| 丰满爆乳一区二区三区| 66精品视频在线观看| 久久精品国产欧美激情| 国产亚洲久一区二区| 成人性视频免费网站| 一区二区视频国产| 欧美日韩国产网站| 日韩精品在线第一页| 亚洲国产精一区二区三区性色| 国精产品一区一区三区mba视频 | 欧美不卡视频| 91中文精品字幕在线视频| 99青草视频在线播放视| 色综合天天在线| 特级西西人体wwwww| 好吊一区二区三区| 97碰碰视频| 在线观看wwwxxxx| 欧美精品自拍偷拍动漫精品| 貂蝉被到爽流白浆在线观看 | 欧美日韩国产麻豆| 韩国三级hd两男一女| 亚洲视频观看| 国产美女精品在线观看| 国产白丝在线观看| 亚洲爱爱爱爱爱| 国产精品日日夜夜| 成人av综合在线| 日韩一级片免费视频| 国产毛片精品| 亚洲91精品在线观看| 五月色婷婷综合| 欧美性xxxx极品高清hd直播| 草草影院第一页| 日韩二区在线观看| 亚洲精品第一区二区三区| 台湾成人免费视频| 中文字幕精品一区二区精品| 一二区在线观看| 1区2区3区欧美| 中文字幕在线观看视频www| 一区二区中文| 国产精成人品localhost| 大黄网站在线观看| 日韩高清人体午夜| 欧美brazzers| 亚洲视频在线一区观看| 青娱乐国产精品视频| 亚洲性感美女99在线| 久久精彩视频| 日本一区二区三区中文字幕 | 亚洲一区二区在线免费观看| 伊人亚洲精品| 国内自拍欧美激情| 国产一区精品| 欧美一区二区黄| 日韩黄色一级大片| 欧美国产精品一区二区三区| www.色就是色.com| 一本色道久久综合亚洲精品不| 欧美日韩在线一二三| 婷婷成人av| 2019中文字幕免费视频| av在线之家电影网站| 日韩三级视频在线看| 丰满少妇乱子伦精品看片| 欧美国产日韩在线观看| 欧美图片自拍偷拍| 日韩电影在线一区二区| 国产 国语对白 露脸| 亚洲自拍电影| 97久久人人超碰caoprom欧美| 日本在线影院| 久久精品国产欧美激情| 亚洲av成人精品日韩在线播放| 欧美日韩在线电影| 国产成人在线播放视频| 中文字幕日韩欧美一区二区三区| 朝桐光av一区二区三区| 国内精品写真在线观看| 少妇人妻互换不带套| 中文字幕人成人乱码| 欧美日韩一区二区三区在线视频| 欧美专区一区| 国产精品免费网站| 日本一本在线免费福利| 在线看福利67194| 午夜福利视频一区二区| 91精品国模一区二区三区| 国产suv精品一区二区33| 亚洲综合激情另类小说区| 人妻熟人中文字幕一区二区| 99精品久久久久久| aaaaaaaa毛片| 毛片av一区二区| 国产亚洲天堂网| 欧美欧美全黄| 国产av不卡一区二区| 国产亚洲一区二区三区不卡| 国产一区免费视频| 亚洲国产精品免费视频| 国产精品一二三在线| 中文字幕21页在线看| 国语自产精品视频在线看| 国产激情小视频在线| 中日韩午夜理伦电影免费| 午夜视频在线播放| 欧美精品一区二区三区很污很色的| 国产日韩一级片| 欧美日韩卡一卡二| 久久精品视频2| 色婷婷综合久久| 99精品人妻国产毛片| 岛国av一区二区三区| 日韩欧美大片在线观看| 亚洲一区日韩精品中文字幕| 小泽玛利亚一区二区免费| 国产精品久久毛片a| 亚洲欧美va天堂人熟伦| 久久精品一区二区三区四区| 国产制服丝袜在线| 91在线观看免费视频| 性色av蜜臀av浪潮av老女人 | 日韩午夜精品电影| 国产婷婷在线视频| 91精品国产综合久久久蜜臀粉嫩 | 日本女人高潮视频| 久久美女精品| 自拍另类欧美| 婷婷精品进入| 黄色一级视频播放| 欧美日韩一卡| 97中文字幕在线| 在线亚洲国产精品网站| 免费在线激情视频| 日本欧美在线看| 在线一区二区不卡| 国产一区二区视频在线播放| 麻豆免费在线观看视频| 成人午夜碰碰视频| 黄色在线观看av| 国产视频一区在线播放| 欧美aaa级片| 樱桃视频在线观看一区| 亚洲黄色一区二区| 在线观看成人免费视频| 国产精品国产av| 欧美成人一区二区三区片免费 | jizz性欧美23| 国语精品免费视频| 精品福利久久久| 永久久久久久| 亚洲精品1234| av无码精品一区二区三区| 久久精品久久精品| 麻豆精品国产传媒| 久久蜜桃av一区精品变态类天堂| www在线观看免费视频| 亚洲视频图片小说| 国产精品一区二区6| 欧美中文字幕一区| 成人毛片在线免费观看| 亚洲精品资源美女情侣酒店| 99精品老司机免费视频| 久久久久久av| 日韩精品免费观看视频| 国产经品一区二区| 日韩久久精品| 国产人妻777人伦精品hd| 奇米色一区二区三区四区| 91porn在线| 国产欧美视频在线观看| 久久精品一区二区三| 日本精品一级二级| 亚洲精品喷潮一区二区三区| 亚洲欧美日韩网| 欧美草逼视频| 国产精品免费网站| 色老板在线视频一区二区| 日本女人高潮视频| 亚洲一区视频| 一区二区三区人妻| 国产精品午夜免费| 伊人手机在线视频| 日韩精品最新网址| 在线观看美女网站大全免费| 97视频在线观看亚洲| 欧美日韩中出| 一区二区三区av| 性欧美xxxx大乳国产app| 最新中文字幕日本| **网站欧美大片在线观看| 精品不卡一区二区| 亚洲第一级黄色片| www在线免费观看视频| 国产精品91在线观看| 香蕉久久精品日日躁夜夜躁| 国产欧美久久久久| 国产一区二区女| 午夜精品久久久久99蜜桃最新版| 日本精品一级二级| 天堂av在线7| 韩国三级电影久久久久久| 精品视频一二| 最新精品视频| 免费精品视频在线| 色屁屁草草影院ccyy.com| 色综合天天性综合| 欧美理论在线观看| 欧美一乱一性一交一视频| 精品三级av| 亚洲精品无码国产| 成人综合婷婷国产精品久久蜜臀| 青青草手机视频在线观看| 91精品国产综合久久久蜜臀粉嫩 | 福利视频在线看| 日本三级久久久| 国产成人黄色| 中文字幕欧美人妻精品一区| 久久久99精品久久| 国产熟妇一区二区三区四区| 亚洲美女在线观看| 亚洲人体影院| 日本一区二区精品| 久久精品系列| eeuss中文字幕| 欧美日韩精品是欧美日韩精品| 99re在线视频| 91精品视频网站| 伊人久久大香线蕉综合四虎小说| 日日干日日操日日射| 亚洲视频1区2区| 亚洲精品国产av| 国内精品久久久久| 免费看成人人体视频| 日本黄色三级大片| 日本一区二区三区久久久久久久久不| 久久国产香蕉视频| zzjj国产精品一区二区| 羞羞视频在线观看一区二区| 欧美在线观看黄| 暴力调教一区二区三区| av大全在线观看| 亚洲深夜福利视频| 色天使综合视频| 欧美日韩亚洲国产成人| 国产精品亚洲第一区在线暖暖韩国| 久草资源在线视频| 亚洲精品美女久久久久| 制服诱惑亚洲| 18视频在线观看娇喘| 岛国精品一区二区| 中文在线第一页| 日日狠狠久久偷偷四色综合免费| 国产精品亚洲欧美日韩一区在线 | 特黄毛片在线观看| 色女孩综合网| 国产乱码精品1区2区3区| 日韩黄色在线视频| 亚洲深夜福利在线| 高清不卡一区| a在线视频观看| 最新不卡av在线| 五月天丁香视频| 成人夜晚看av| 在线一区免费观看| 午夜国产小视频| 日韩精品日韩在线观看| 永久免费观看精品视频| 日日橹狠狠爱欧美超碰| 日韩一区欧美小说| 天天干免费视频| 91在线精品播放| 久久三级视频| 久操视频免费在线观看| 一本一道久久a久久精品逆3p | 欧美少妇在线观看| 92国产精品观看| www.av日韩| 国产精品视频男人的天堂| 99国产精品久久久久久久成人热| 国产精品麻豆一区| 亚洲欧美国产制服动漫|