亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

根據(jù)指定股票通道指標(biāo)的算法,能用過去一定時間段的交易數(shù)據(jù)繪制出上下兩條通道線,即價格通道里的上下軌道。一般來說,當(dāng)股價向上突破上軌時,即預(yù)測后市將漲,反之當(dāng)股價向下突破下軌時,即預(yù)測后市將跌。

這里將根據(jù)若干算法,計算并繪制多種價格通道,從中大家一方面可以積累股市分析的經(jīng)驗,另一方面還能進一步掌握基于pandas的數(shù)據(jù)分析方法,以及基于matplotlib的可視化技巧。

1 計算并繪制唐奇安通道

唐奇安通道是由上阻力線、下支撐線和中心線這三條線組成。

上阻力線 = 過去N天的最高價

下支撐線 = 過去N天的最低價

中心線 =(上線 + 下線)除以 2

在實際的分析場景里,N的取值一般是20,在如下的DisplayDonChannel.py范例中,就用20天為周期,來計算并繪制唐奇安通道。

01    # coding=utf-8
02    import pandas as pd
03    import matplotlib.pyplot as plt
04    from mpl_finance import candlestick2_ochl
05    # 讀數(shù)據(jù)
06    stockDf = pd.read_csv('D:/work/data/ch11/600530.ss.csv')
07    fig, ax = plt.subplots()
08    candlestick2_ochl(ax = ax, opens=stockDf["Open"].values, closes=stockDf["Close"].values, highs=stockDf["High"].values, lows=stockDf["Low"].values, width=0.75, colorup='red', colordown='green')
09    stockDf['up'] = stockDf['High'].rolling(window=20).max()
10    stockDf['up'].plot(color="green",label='上阻力線')
11    stockDf['down'] = stockDf['Low'].rolling(window=20).min()
12    stockDf['down'].plot(color="navy",label='下支撐線')
13    stockDf['mid'] = (stockDf['up']+stockDf['down'])/2
14    stockDf['mid'].plot(color="red",label='中心線')
15    ax.set_ylabel("收盤價(元)")
16    ax.grid()         # 帶網(wǎng)格線
17    ax.legend()     # 繪制圖例
18    #設(shè)置x軸文字間隔和旋轉(zhuǎn)角度
19    index=stockDf.index[stockDf.index%7==0]
20    xtics=stockDf['Date'][stockDf.index%7==0]
21    plt.xticks(index,xtics)
22    plt.setp(plt.gca().get_xticklabels(), rotation=30)
23    plt.rcParams['font.sans-serif']=['SimHei']
24    plt.title("600530交大昂立20天唐奇安通道效果圖")
25    plt.show()

在第5行到第8行的代碼里,從csv文件里讀到了股票交易數(shù)據(jù),并通過調(diào)用candlestick2_ochl方法繪制了k線圖。在第9行里,通過rolling(window=20)方法得到了過去20天的最高價集合,在此基礎(chǔ)上通過max()方法得到了過去20天的最高價,隨后用第10行的plot方法繪制了上阻力線。

隨后用同樣的方法,用第11行和第12行的代碼計算并繪制了下支撐線。在第13行里,設(shè)置了中心線為上阻力線和下支撐線的均值,并在第14行繪制了中心線。

由于在繪制上阻力線、下支撐線和中心線的時候都通過label參數(shù)設(shè)置了圖例,隨后在第17行用legend方法繪制了圖例效果。為了能更直觀地對比數(shù)據(jù),所以在第16行里用grid方法設(shè)置了網(wǎng)格效果。

這里同樣是通過第19行到第22行的代碼,設(shè)置了x軸文字的間隔以及旋轉(zhuǎn)角度,并在第24行里用title方法設(shè)置了標(biāo)題。為了能顯示中文標(biāo)題,所以還需要加上第23行的語句。運行本范例,能看到如下圖所示的效果,由于計算周期是20日,所以之前19日看不到對應(yīng)的價格通道。而且從圖上看,股價均在通道內(nèi)運動,并沒有向上和向下突破的動作,也就是說,從這些天的交易數(shù)據(jù)里,看不到基于20日唐奇安通道的買賣信號。

 

用Python繪制股票唐奇安通道,布林帶通道和鱷魚組線

 

 

2 計算并繪制布林帶通道

和上文描述的唐奇安通道類似,布林帶通道也是通過上阻力線、下支撐線和中心線來繪制價格通道,這里的三條線算法如下所示。

中心線 = N日移動均線

上阻力線 = 中心線+兩倍過去N天收盤價的標(biāo)準(zhǔn)差

下支撐線 = 中心線-兩倍過去N天收盤價的標(biāo)準(zhǔn)差

而N的取值一般也是20。在如下的DisplayBollingerBands.py范例中,將演示計算并繪制20日周期布林帶通道的做法。

01    # coding=utf-8
02    import pandas as pd
03    import matplotlib.pyplot as plt
04    from mpl_finance import candlestick2_ochl
05    # 讀數(shù)據(jù)
06    stockDf = pd.read_csv('D:/work/data/ch11/600530.ss.csv')
07    fig, ax = plt.subplots()
08    candlestick2_ochl(ax = ax, opens=stockDf["Open"].values, closes=stockDf["Close"].values, highs=stockDf["High"].values, lows=stockDf["Low"].values, width=0.75, colorup='red', colordown='green')
09    stockDf['mid'] = stockDf['Close'].rolling(window=20).mean()
10    stockDf['std'] = stockDf['Close'].rolling(window=20).std()
11    stockDf['up'] = stockDf['mid'] + 2*stockDf['std']
12    stockDf['down'] = stockDf['mid'] - 2*stockDf['std']
13    stockDf['up'].plot(color="green",label='上阻力線')
14    stockDf['down'].plot(color="navy",label='下支撐線')
15    stockDf['mid'].plot(color="red",label='中心線')
16    ax.set_ylabel("收盤價(元)")
17    ax.grid() # 帶網(wǎng)格線
18    ax.legend()     # 繪制圖例
19    #設(shè)置x軸文字間隔和旋轉(zhuǎn)角度
20    index=stockDf.index[stockDf.index%7==0]
21    xtics=stockDf['Date'][stockDf.index%7==0]
22    plt.xticks(index,xtics)
23    plt.setp(plt.gca().get_xticklabels(), rotation=30)
24    plt.rcParams['font.sans-serif']=['SimHei']
25    plt.title("600530交大昂立20天布林帶通道效果圖")
26    plt.show()

本范例和之前的唐奇安通道的范例很相似,區(qū)別主要集中在第9行到第15行。在第9行里,先用rolloing和 mean方法計算過去20天的均值,以此作為中心線,再通過第10行的rolling和std方法,計算過去20天收盤價的標(biāo)準(zhǔn)差,在此基礎(chǔ)上再通過第11行和第12行的代碼計算上阻力線和下支撐線。

完成計算后,是通過第13行到第15行的plot方法繪制三條線,同時用label參數(shù)設(shè)置了圖例。運行本范例,能看到如下圖所示的效果。其中布林帶通道的寬度是由過去20天收盤價的標(biāo)準(zhǔn)差決定,也就是說,如果過去20天收盤價波動比較大,那么布林帶通道就比較寬,反之就比較狹窄。而且,雖然有個別價格向上或向下突破通道,但未形成“有效突破”,所以后期價格依然在通道內(nèi)波動,由此大家能感受到“上阻力線”和“下支撐線”的“阻力”和“支撐”效果。

用Python繪制股票唐奇安通道,布林帶通道和鱷魚組線

 

3 計算并繪制鱷魚組線

鱷魚組線其實不屬于價格通道指標(biāo),但也是通過三條線來研判股價的走勢,在鱷魚組線里,三條線分別叫上唇、牙齒和下顎,具體算法如下所述。

上唇線是5天周期的價格平滑移動平均線( SMMA ),向未來延后3天,也就是說第8天才會開始展示上唇線,上唇線一般用綠線繪制。

牙齒線是由8天周期的價格平滑移動平均線,向未來延后5天,一般用紅線繪制。

下顎線由13天周期的價格平滑移動平均線向未來延后8天,一般用藍色繪制。

這里的平滑移動平均線SMMA也叫流暢移動平均線,這里以5天周期為例,講下具體的算法。

第1個SMMA值(即第5天的平滑平均值) = 前五天收盤價的均價

第6天的值 = (該周期內(nèi)收盤價的和 –第1個SMMA值 + 第6天的收盤價)/5

第7天的值 = (該周期內(nèi)收盤價的和 – 第2個SMMA值 + 第7天的收盤價)/5

依次類推,第n天的值 = (該周期內(nèi)收盤價的和 –上個SMMA值 + 第n日收盤價)/5

這里的算法涉及到計算平滑移動平均線,在如下的DisplayCrocodileLines.py范例中,就將演示用pandas庫計算相關(guān)數(shù)值,并用matplotlib繪制鱷魚組線的做法。

01    # coding=utf-8
02    import pandas as pd
03    import matplotlib.pyplot as plt
04    from mpl_finance import candlestick2_ochl
05    #計算各種SMMA值
06    def setSMMAVal(df, period):
07        for i in range(len(df)):
08            if i<period:
09                df['SMMA' + str(period)] = df.ix[i,'MA'+  str(period)]
10            else: #按算法計算SMMA值
11               df.ix[i,'SMMA'+ str(period)]=df.ix[i,'MA'+ str(period)] + (df.ix[i,'Close'] - df.ix[i-1,'SMMA'+ str(period)])/period
12        return df

在第6行的setSMMAVal方法里,是根據(jù)參數(shù)period指定的周期,計算各種SMMA值。具體而言,在第7行的for循環(huán)里,如果當(dāng)前遍歷的索引號小于周期值,則設(shè)置SMMA值為當(dāng)天的MA均值,否則的話,則通過第11行的代碼,按SMMA的算法,計算當(dāng)天的值。

請注意這里的列名是動態(tài)拼接的,比如在第9行,如果當(dāng)前參數(shù)是5,那么其實是用df['MA5'] 的值來填充df['SMMA' + str(period)]值。

13    #計算三條鱷魚組線
14    def setCrocodileVal(df):
15        #  用shift方法,把數(shù)據(jù)順延
16        df['up'] = df['SMMA5'].shift(3)
17        df['mid'] = df['SMMA8'].shift(5)
18        df['down'] = df['SMMA13'].shift(8)
19        return df

在得到SMMA的值以后,可以通過第14行的setCrocodileVal方法來計算3條鱷魚組線的值,這里的技巧是shift方法,比如在第16行里,使用df['SMMA5'].shift(3)代碼,把當(dāng)天的SMMA5值向后順延3天,以此設(shè)置上唇線的值。在第17行和第18行里,也是用shift方法,順延對應(yīng)的SMMA值,得到牙齒線和下顎線的值。

20    # 讀數(shù)據(jù)
21    stockDf = pd.read_csv('D:/work/data/ch11/600530.ss.csv')
22    #算均值
23    stockDf['MA5'] = stockDf['Close'].rolling(window=5).mean()
24    stockDf['MA8'] = stockDf['Close'].rolling(window=8).mean()
25    stockDf['MA13'] = stockDf['Close'].rolling(window=13).mean()
26    #算三個SMMA值
27    stockDf = setSMMAVal(stockDf, 5)
28    stockDf = setSMMAVal(stockDf, 8)
29    stockDf = setSMMAVal(stockDf, 13)
30    #計算三個鱷魚組線的值
31    stockDf = setCrocodileVal(stockDf)

通過第21行的代碼得到csv里股票數(shù)據(jù)后,先通過第23行到第25行的代碼,計算5天、8天和13天的均價,并通過第27行到第29行的代碼計算三個SMMA值,隨后再通過第31行的代碼計算三個鱷魚組線的值,至此完成計算,在后文里開始繪圖。

32    fig, ax = plt.subplots()
33    #為了突出三條組線,設(shè)置了透明度為0.5
34    candlestick2_ochl(ax = ax, opens=stockDf["Open"].values, closes=stockDf["Close"].values, highs=stockDf["High"].values, lows=stockDf["Low"].values, width=0.75, colorup='red',alpha=0.5, colordown='green')
35    #繪制三條組線
36    stockDf['up'].plot(color="green",label='上唇線')
37    stockDf['down'].plot(color="red",label='牙齒線')
38    stockDf['mid'].plot(color="blue",label='下顎線')
39    ax.set_ylabel("收盤價(元)")
40    ax.grid() # 帶網(wǎng)格線
41    ax.legend()     # 繪制圖例
42    #設(shè)置x軸文字間隔和旋轉(zhuǎn)角度
43    index=stockDf.index[stockDf.index%7==0]
44    xtics=stockDf['Date'][stockDf.index%7==0]
45    plt.xticks(index,xtics)
46    plt.setp(plt.gca().get_xticklabels(), rotation=30)
47    plt.rcParams['font.sans-serif']=['SimHei']
48    plt.title("600530交大昂立鱷魚組線效果圖")
49    plt.show()

在第36行到第38行的代碼里,是通過plot方法繪制了三條鱷魚組線,同時通過color參數(shù)分別設(shè)置了顏色,通過label參數(shù)設(shè)置了圖例。其他的可視化代碼之前都已經(jīng)分析過,這里就不再講述了。運行本范例,能看到如下圖所示的效果。

 

用Python繪制股票唐奇安通道,布林帶通道和鱷魚組線

 

 

由于在繪制K線圖時通過alpha參數(shù)設(shè)置了透明度,所以這里三條鱷魚組線更加明顯。

按照股市分析理論,如果上唇線在牙齒線之上,同時牙齒線在下顎線之上,說明當(dāng)前進入股價上升階段。如果相反,上唇線在牙齒線之下,而牙齒線在下顎線之下,則說明股價進入下跌階段。如果上圖那樣三條線相互交錯纏繞,則通過該指標(biāo)說明當(dāng)前市場沒有發(fā)出明確的買賣交易信號。不過本范例的主題是數(shù)據(jù)分析,所以請更關(guān)注計算三條線時用到的相關(guān)Python方法。

最后,小編想說:我是一名python開發(fā)工程師,整理了一套最新的python系統(tǒng)學(xué)習(xí)教程,想要這些資料的可以關(guān)注私信小編“01”即可(免費分享哦)希望能對你有所幫助。

分享到:
標(biāo)簽:股票 Python
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定