日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

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

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

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

這里將根據若干算法,計算并繪制多種價格通道,從中大家一方面可以積累股市分析的經驗,另一方面還能進一步掌握基于pandas的數據分析方法,以及基于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    # 讀數據
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()         # 帶網格線
17    ax.legend()     # 繪制圖例
18    #設置x軸文字間隔和旋轉角度
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文件里讀到了股票交易數據,并通過調用candlestick2_ochl方法繪制了k線圖。在第9行里,通過rolling(window=20)方法得到了過去20天的最高價集合,在此基礎上通過max()方法得到了過去20天的最高價,隨后用第10行的plot方法繪制了上阻力線。

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

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

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

 

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

 

 

2 計算并繪制布林帶通道

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

中心線 = N日移動均線

上阻力線 = 中心線+兩倍過去N天收盤價的標準差

下支撐線 = 中心線-兩倍過去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    # 讀數據
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() # 帶網格線
18    ax.legend()     # 繪制圖例
19    #設置x軸文字間隔和旋轉角度
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()

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

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

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

 

3 計算并繪制鱷魚組線

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

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

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

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

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

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

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

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

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

這里的算法涉及到計算平滑移動平均線,在如下的DisplayCrocodileLines.py范例中,就將演示用pandas庫計算相關數值,并用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方法里,是根據參數period指定的周期,計算各種SMMA值。具體而言,在第7行的for循環里,如果當前遍歷的索引號小于周期值,則設置SMMA值為當天的MA均值,否則的話,則通過第11行的代碼,按SMMA的算法,計算當天的值。

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

13    #計算三條鱷魚組線
14    def setCrocodileVal(df):
15        #  用shift方法,把數據順延
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)代碼,把當天的SMMA5值向后順延3天,以此設置上唇線的值。在第17行和第18行里,也是用shift方法,順延對應的SMMA值,得到牙齒線和下顎線的值。

20    # 讀數據
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里股票數據后,先通過第23行到第25行的代碼,計算5天、8天和13天的均價,并通過第27行到第29行的代碼計算三個SMMA值,隨后再通過第31行的代碼計算三個鱷魚組線的值,至此完成計算,在后文里開始繪圖。

32    fig, ax = plt.subplots()
33    #為了突出三條組線,設置了透明度為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() # 帶網格線
41    ax.legend()     # 繪制圖例
42    #設置x軸文字間隔和旋轉角度
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參數分別設置了顏色,通過label參數設置了圖例。其他的可視化代碼之前都已經分析過,這里就不再講述了。運行本范例,能看到如下圖所示的效果。

 

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

 

 

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

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

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

分享到:
標簽:股票 Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

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

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定