亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

用python的matplotlib和numpy庫繪制股票K線均線的整合效果

系統 1776 0

? ? 本人最近在嘗試著發表“以股票案例入門Python編程語言”系列的文章,在這些文章里,將用Python工具繪制各種股票指標,在講述各股票指標的含義以及計算方式的同時,驗證基于各種指標的交易策略,本文是第一篇,通過K線和均線案例講述Numpy,Maplotlib等相關庫的用法,并且還用代碼案例來驗證買賣的交易策略。在本系列的后面文章中,將陸續通過python繪制成交量、KDJ、MACD、RSI和OBV等指標,而且還會用Python編寫針對這些指標的交易策略,敬請關注。

1?K線整合均線的案例

? ??均線也叫移動平均線(Moving Average,簡稱MA),是指某段時間內的平均股價(或指數)連成的曲線,通過它我們能清晰地看到股價的歷史波動,從而能進一步預測未來價格的發展趨勢。

? ? 均線一般分短期、中期和長期這三類。

? ? 1 通常把5天和10天移動平均線稱為短期均線,一般供短線投資者參照。

? ? 2一般把20天、30天和60天移動平均線作為中期均線,一般供中線投資者參考。

? ? 3 一般120天和250天(甚至更長)移動平均線稱為長期均線,一般供長線投資者參考。

? ? 不過在實踐中,我們一般需要綜合地觀察短期中期和長期均線,從中能分析出市場的多空趨勢。比如,如果某股價格的三類均線均上漲,且短期中期長期均線是從上到下排列,則說明該股價格趨勢向上;反之如果并列下跌,且長期中期短期均線從上到下排列,則說明股價趨勢向下。

? ? 講完概念了,我們通過rolling方法繪制均線。? ??

            1	#!/usr/bin/env python
2	#coding=utf-8
3	import pandas as pd
4	import matplotlib.pyplot as plt 
5	from mpl_finance import candlestick_ochl  
6	#從文件里得到數據
7	df = pd.read_csv('D:/stockData/ch6/600895.csv',encoding='gbk')
8	#設置圖的位置
9	fig = plt.figure()
10	ax = fig.subplot(111)
11	#調用方法,繪制K線圖 
12	candlestick_ochl(opens=df["Open"].values, closes=df["Close"].values, highs=df["High"].values, lows=df["Low"].values,width=0.75, colorup='red', colordown='green')
13	df['Close'].rolling(window=3).mean().plot(color="red",label='3天均線')
14	df['Close'].rolling(window=5).mean().plot(color="blue",label='5天均線')
15	df['Close'].rolling(window=10).mean().plot(color="green",label='10天均線')
16	plt.legend(loc='best') #繪制圖例
17	#設置x軸的標簽 
18	plt.xticks(range(len(df.index.values)),df.index.values,rotation=30 ) 
19	ax.grid(True) #帶網格線
20	plt.title("600895張江高科的K線圖")
21	plt.show()

          

? ? 從第13行到第15行里,通過rolling方法,根據每天的收盤價,計算了3天、5天和10天均線,并為每種均線設置了圖例,在第16行里,通過legend方法設置了圖例的位置。上述代碼的運行效果如下圖所示,從中我們不僅能看到這段時間內的K線圖,還能看到3根均線。? ??

? ?? 用python的matplotlib和numpy庫繪制股票K線均線的整合效果(含從網絡接口爬取數據和驗證交易策略代碼)_第1張圖片

2?K線整合均線的改進版案例

? ? 在本例中,我們將做如下兩點改進,其中請大家著重觀察操作坐標軸的ax對象。??

? ? 第一,為了更靈活地得到股市數據,這里是根據開始時間和結束時間,先是調用get_data_yahoo接口,從yahoo的接口里獲取股票數據,同時為了留一份數據,所以會把從接口爬取到的數據保存到本地csv文件,做完之后再繪制圖形。

? ? 第二,在之前的案例中,x軸的刻度是每個交易日的日期,但如果顯示的時間范圍過長,那么時間刻度就會太密集,影響美觀效果,所以這里將只顯示主刻度。改進后的代碼如下所示。

            1	#!/usr/bin/env python
2	#coding=utf-8
3	import pandas_datareader
4	import pandas as pd
5	import matplotlib.pyplot as plt 
6	from mpl_finance import candlestick2_ochl
7	from matplotlib.ticker import MultipleLocator 
8	#根據指定代碼和時間范圍,獲取股票數據
9	code='600895.ss'
10	stock = pandas_datareader.get_data_yahoo(code,'2019-01-01','2019-03-31')
11	#刪除最后一行,因為get_data_yahoo會多取一天數據
12	stock.drop(stock.index[len(stock)-1],inplace=True)
13	#保存在本地
14	stock.to_csv('D:\\stockData\ch7\\600895.csv')
15	df = pd.read_csv('D:/stockData/ch7/600895.csv',encoding='gbk',index_col=0)
16	#設置窗口大小
17	fig, ax = plt.subplots(figsize=(10, 8))
18	xmajorLocator   = MultipleLocator(5) #將x軸主刻度設置為5的倍數
19	ax.xaxis.set_major_locator(xmajorLocator)
20	#調用方法,繪制K線圖 
21	candlestick2_ochl(ax = ax, 
22	opens=df["Open"].values,closes=df["Close"].values, highs=df["High"].values, lows=df["Low"].values,width=0.75, colorup='red', colordown='green')
23	#如下是繪制3種均線
24	df['Close'].rolling(window=3).mean().plot(color="red",label='3天均線')
25	df['Close'].rolling(window=5).mean().plot(color="blue",label='5天均線')
26	df['Close'].rolling(window=10).mean().plot(color="green",label='10天均線')
27	plt.legend(loc='best') #繪制圖例
28	ax.grid(True) #帶網格線
29	plt.title("600895張江高科的K線圖")
30	plt.rcParams['font.sans-serif']=['SimHei']
31	plt.setp(plt.gca().get_xticklabels(), rotation=30) 
32	plt.show()

          

? ? 相比之前代碼,這段代碼有四個改進點。

? ? 第一,從第9行到第14行里,我們通過第五章分析過的get_data_yahoo方法,傳入股票代碼、開始和結束時間這三個參數,從yahoo接口里獲得股票交易的數據。

? ? 請注意該方法返回的數據會比傳入的結束時間多一天,比如我們傳入的結束時間是2019-03-31,但它會返回后一天(即2019-04-01)的數據,所以得通過第12行的drop方法,刪除stock對象(該對象類型是dataframe)最后一行的數據。刪除的時候是通過stock.index[len(stock)-1]指定刪除長度減1的索引值,因為索引值是從0開始,而且需要指定inplace=True,否則的話,刪除的結果無法更新到stock這個dataframe里。

? ? 第二,在第17行里,通過figsize方法設置了窗口的大小尺寸。

? ? 第三,通過第18行和第19行的代碼,設置了主刻度是5的倍數。之所以設置成5的倍數,是因為一般一周的交易日是5天。但這里不能簡單地把主刻度設置成每周一,因為某些周一有可能是股市休市的法定假日。

? ? 第四,由于無需在x軸上設置每天的日期,所以這里無需再調用plt.xticks方法,但是得調用如第31行所示的代碼,設置x軸刻度的旋轉角度,否則x軸展示的時間依然有可能會重疊。

? ? 這段代碼的運行效果如下圖所示,從中大家能看到改進后的效果,而且,由于本次展示的股票時間段變長了(是3個月),所以相比drawKAndMA.py案例,均線的效果更為明顯,尤其是三日均線,更是幾乎貫穿于整個交易日范圍。

? ?? 用python的matplotlib和numpy庫繪制股票K線均線的整合效果(含從網絡接口爬取數據和驗證交易策略代碼)_第2張圖片

3?葛蘭碧均線八大買賣法則

? ?在均線實踐理論中,投資專家葛蘭碧創造的八項買賣法則可謂經典,具體的細節如下圖所示。

? ?? 用python的matplotlib和numpy庫繪制股票K線均線的整合效果(含從網絡接口爬取數據和驗證交易策略代碼)_第3張圖片

? ? 1 移動平均線從下降逐漸轉為平水平,且有超上方抬頭跡象,而股價從均線下方突破時,為買進信號,如上圖中的A點。

? ? 2 股價于移動平均線之上運行時下跌,但未跌破均線,此時股價再次上揚,此時為買入信號,如圖中的C點。

? ? 3 股價位于均線上運行,下跌時破均線,但均線呈上升趨勢,不久股價回到均線之上時,為買進信號,如圖中的B點。

? ? 4 股價在均線下方運行時大跌,遠離均線時向均線靠近,此時為買進時機,如圖中的D點。

? ? 5 均線的上升趨勢逐漸變平,且有向下跡象,而股價從均線上方向下穿均線,為賣出信號,如圖中的E點。

? ? 6 股價向上穿過均線,不過均線依然保持下跌趨勢,此后股價又下跌回均線下方,為賣出信號,如圖中的F點。

? ? 7 股價運行在均線下方,出現上漲,但未過均線就再次下跌,此為賣出點,如圖中的G點。

? ? 8 股價在均線的上方運行,連續上漲且繼續遠離均線,這種趨勢說明隨時會出現獲利回吐的賣盤打壓,此時是賣出的時機,如前圖中的H點。

4?通過DataFrame對象驗證均線的買點策略

? ? 根據上述八大買賣原則,我們在張江高科2019年1月到3月的交易數據內,用pandas庫里的dataframe等對象,根據5日均線計算參考買點,代碼如下所示。? ??

            1	#!/usr/bin/env python
2	#coding=utf-8
3	import pandas as pd
4	#從文件里得到數據
5	df = pd.read_csv('D:/stockData/ch7/600895.csv',encoding='gbk')
6	maIntervalList = [3,5,10]
7	#雖然在后文里只用到了5日均線,但這里演示設置3種均線
8	for maInterval in maIntervalList:
9	    df['MA_' + str(maInterval)] = df['Close'].rolling(window=maInterval).mean()
10	cnt=0    
11	while cnt<=len(df)-1:
12	    try:
13	        #規則1,收盤價連續三天上揚
14	        if df.iloc[cnt]['Close']
            
              df.iloc[cnt]['Close'] and df.iloc[cnt+2]['MA_5']
              
            
          

? ? 雖然在計算參考買點時,只用到了5日均價,但在第8行和第9行的for循環里,我們通過rolling方法,還是計算了3日、5日和10日的均價,并把計算后的結果記錄到當前行的MA_3、MA_5和MA_10這三列中,這樣做的目的是為了演示動態創建列的做法。

? ? 在第11行到第22行的while循環里,我們依次遍歷了每天的交易數據,并在第14行,第16行和第18行里,通過三個if語句,設置了3個規則。由于在前幾天是沒有5日均價了,且在遍歷最后2天交易數據時,在執行諸如df.iloc[cnt+2]['Close']的語句中會出現索引越界,所以在while循環里我們用到了try…except異常處理語句。

? ? 運行上述代碼,我們能看到的結果是:Buy Point on:2019-03-08,結合上圖,我們能看到3月8日之后的交易日里,股價有一定程度的上漲,所以能證實基于均線的“買”原則,但影響股價的因素太多,大家應全面分析,切勿在實戰中只用這原則來買賣股票。

5?通過DataFrame驗證均線的賣點策略

? ? 同樣地,根據5日均線計算參考買點,在如下案例中,我們計算了張江高科2019年1月到3月內的賣點。? ??

            1	#!/usr/bin/env python
2	#coding=utf-8
3	import pandas as pd
4	#從文件里得到數據
5	df = pd.read_csv('D:/stockData/ch7/600895.csv',encoding='gbk')
6	maIntervalList = [3,5,10]
7	#雖然在后文里只用到了5日均線,但這里演示設置3種均線
8	for maInterval in maIntervalList:
9	    df['MA_' + str(maInterval)] = df['Close'].rolling(window=maInterval).mean()
10	cnt=0    
11	while cnt<=len(df)-1:
12	    try:
13	        #規則1,收盤價連續三天下跌
14	        if df.iloc[cnt]['Close']>df.iloc[cnt+1]['Close'] and df.iloc[cnt+1]['Close']>df.iloc[cnt+2]['Close']:
15	            #規則2,5日均線連續三天下跌
16	            if df.iloc[cnt]['MA_5']>df.iloc[cnt+1]['MA_5'] and df.iloc[cnt+1]['MA_5']>df.iloc[cnt+2]['MA_5']:
17	                #規則3,第3天,收盤價下穿5日均線
18	                if df.iloc[cnt+1]['MA_5']
            
              df.iloc[cnt+1]['Close']:     
19	                    print("Sell Point on:" + df.iloc[cnt]['Date'])
20	    except: #有幾天是沒5日均線的,所以用except處理異常
21	        pass                
22	    cnt=cnt+1

            
          

? ? 運行后,我們能得到兩個賣點:2019-01-23和2019-01-23,這同樣能在上圖描述的K線圖里得到驗證。

6 求推薦,后文預告與版權說明

? ? 在本系列的后面文章中,將陸續通過python繪制成交量、KDJ、MACD、RSI和OBV等指標,而且還會用Python編寫針對這些指標的交易策略,敬請關注。

? ? 本文用了我將近3個小時,如果大家感覺好,請幫忙推薦下。

? ??關于轉載有如下的說明。

? ? 1 本文文字和代碼均屬原創,可轉載,但謝絕用于商業用戶。

? ? 2 轉載時請用 鏈接 的方式,給出原文出處,同時寫明原作者是hsm_computer。

? ? 3 在轉載時,請原文轉載 ,如要 在轉載修改本文,請事先告知,謝絕在轉載時通過修改本文達到有利于轉載者的目的。

? ??


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 五月激情婷婷综合 | 婷婷四房综合激情五月在线 | 亚洲久草视频 | 国产高清视频在线免费观看 | 久久久精品在观看999 | 日韩免费毛片视频 | 国产成人久久一区二区三区 | 国产亚洲精品在天天在线麻豆 | 亚洲国产成人久久一区www | 九九精品视频在线观看九九 | 色国产精品一区在线观看 | 亚洲人成网i8禁止 | 日日摸夜夜爽人人添 | 亚洲婷婷丁香 | 偷拍清纯高清视频在线 | 九九国产精品 | 俄罗斯美女逼 | 亚洲综合极品香蕉久久网 | 久久爱噜噜噜噜久久久网 | 成人国产在线视频 | 亚洲国产一区在线二区三区 | 四虎永久成人免费 | 欧美日韩国产高清精卡 | 999久久66久6只有精品 | 日韩特黄 | 国产亚洲精品国产福利在线观看 | 尹人香蕉网 | 欧美亚洲国产成人精品 | 99精品高清不卡在线观看 | 国产精品久久久久影院色老大 | 国产黄色91 | 欧美日韩亚洲国内综合网香蕉 | 国产亚洲精品九九久在线观看 | 欧美社区 | 欧美观看一级毛片 | 天天操夜夜操美女 | 亚洲欧美一区二区三区麻豆 | 一级毛片aa高清免费观看 | 久久99热久久精品99 | 99久久国产综合精品女不卡 | 国产成人国产在线观看入口 |