秒速快3app注册_用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)

  • 时间:
  • 浏览:0
  • 来源:熊猫辅助网_提供洋葱娱乐网技术_梅花辅助网资讯

    我各人最近在尝试着发表“以股票案例入门Python编程语言”系列的文章,在哪此文章里,将用Python工具绘制各种股票指标,在讲述各股票指标的含义以及计算妙招的共同,验证基于各种指标的交易策略,本文是第一篇,通过K线和均线案例讲述Numpy,Maplotlib等相关库的用法,就是 还用代码案例来验证买卖的交易策略。在本系列的里面文章中,将陆续通过python绘制成交量、KDJ、MACD、RSI和OBV等指标,就是 都是用Python编写针对哪此指标的交易策略,敬请关注。

1 K线整合均线的案例

    均线也叫移动平均线(Moving Average,简称MA),是指某段时间内的平均股价(或指数)连成的曲线,通过它亲戚亲戚大伙能清晰地想看 股价的历史波动,从而能进一步预测未来价格的发展趋势。

    均线一般分短期、中期和长期这三类。

    1 通常把4天 和10天移动平均线称为短期均线,一般供短线投资者参照。

    2一般把20天、60 天和60 天移动平均线作为中期均线,一般供中线投资者参考。

    3 一般120天和260 天(甚至更长)移动平均线称为长期均线,一般供长线投资者参考。

    不过在实践中,亲戚亲戚大伙一般时需综合地观察短期中期和长期均线,从中能分挥发掉市场的多空趋势。比如,就是 某股价格的三类均线均上涨,且短期中期长期均线是从上到下排列,则说明该股价格趋势向上;反之就是 并列下跌,且长期中期短期均线从上到下排列,则说明股价趋势向下。

    讲完概念了,亲戚亲戚大伙通过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/60
0895.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='4天

均线')
14	df['Close'].rolling(window=5).mean().plot(color="blue",label='4天

均线')
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=60

 ) 
19	ax.grid(True) #带网格线
20	plt.title("60
0895张江高科的K线图")
21	plt.show()

    从第13行到第15行里,通过rolling妙招,根据每天的收盘价,计算了4天 、4天 和10天均线,并为累积均线设置了图例,在第16行里,通过legend妙招设置了图例的位置。上述代码的运行效果如下图所示,从中亲戚亲戚大伙不仅能想看 这段时间内的K线图,还能想看 3根均线。    

    

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='60
0895.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\\60
0895.csv')
15	df = pd.read_csv('D:/stockData/ch7/60
0895.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='4天

均线')
25	df['Close'].rolling(window=5).mean().plot(color="blue",label='4天

均线')
26	df['Close'].rolling(window=10).mean().plot(color="green",label='10天均线')
27	plt.legend(loc='best') #绘制图例
28	ax.grid(True) #带网格线
29	plt.title("60
0895张江高科的K线图")
60

	plt.rcParams['font.sans-serif']=['SimHei']
31	plt.setp(plt.gca().get_xticklabels(), rotation=60

) 
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的倍数,是就是 一般一周的交易日是4天 。但这里能要能 简单地把主刻度设置成每周一,就是 某些周一有就是 是股市休市的法定假日。

    第四,就是 后要在x轴上设置每天的日期,就是 这里后要再调用plt.xticks妙招,就是 得调用如第31行所示的代码,设置x轴刻度的旋转宽度,就是 x轴展示的时间依然有就是 会重叠。

    这段代码的运行效果如下图所示,从中亲戚亲戚大伙能想看 改进后的效果,就是 ,就是 本次展示的股票时间段变长了(是八个月),就是 相比drawKAndMA.py案例,均线的效果更为明显,尤其是三日均线,更是几乎贯穿于整个交易日范围。

    

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/60
0895.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,收盘价连续4天

上扬
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日均线连续4天

上扬
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,第4天

,收盘价上穿5日均线
18	                if df.iloc[cnt+1]['MA_5']>df.iloc[cnt]['Close'] and df.iloc[cnt+2]['MA_5']<df.iloc[cnt+1]['Close']:     
19	                    print("Buy Point on:" + df.iloc[cnt]['Date'])
20	    except: #有几天是没5日均线的,就是

用except除理异常
21	        pass:                
22	    cnt=cnt+1

    我确实在计算参考买点时,只用到了5日均价,但在第8行和第9行的for循环里,亲戚亲戚大伙通过rolling妙招,还是计算了3日、5日和10日的均价,并把计算后的结果记录到当前行的MA_3、MA_5和MA_10这三列中,以前做的目的是为了演示动态创建列的做法。

    在第11行到第22行的while循环里,亲戚亲戚大伙依次遍历了每天的交易数据,并在第14行,第16行和第18行里,通过有三个小if得话,设置了八个规则。就是 在前几天是越来越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/60
0895.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,收盘价连续4天

下跌
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日均线连续4天

下跌
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,第4天

,收盘价下穿5日均线
18	                if df.iloc[cnt+1]['MA_5']<df.iloc[cnt]['Close'] and df.iloc[cnt+2]['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编写针对哪此指标的交易策略,敬请关注。

    本文用了我将近八个小时,就是 亲戚亲戚大伙感觉好,请帮忙推荐下。

    关于转载有如下的说明。

    1 本文文字和代码均属原创,可转载,但谢绝用于商业用户。

    2 转载时请用链接的妙招,给出原文出处,共同写明原作者是hsm_computer。

    3 在转载时,请原文转载 ,如要在转载修改本文,请以前 告知,谢绝在转载时通过修改本文达到有有助于于转载者的目的。

猜你喜欢

大发pk10直播 _华为视频“百花号”:三重升级协同亿级资源扶持视频内容生态

首发“百花号”,用“三重升级”构建全新视频内容服务平台华为视大发pk10直播 频积极构筑开放共赢的视频内容生态,致力于为全球华为终端用户提供更愉悦的视大发pk10直播 听体验,

2020-04-04

10分pk10app客户端下载 _河南迎来新常委 山东省委常委、宣传部部长孙守刚履新河南

十九大胜利闭幕一另两个月,河南迎来一位新常委。日前,山东省委常委、宣传部部长孙守刚履新河南,具体职务有待明确。据河南日报报道,11月24日,省委委员会议在郑州举行。会议审议表决

2020-04-04

好运时时彩口诀_Hystrix针对不可用服务的保护机制以及引入缓存

  事先我写过一篇博文,通过案例了解Hystrix的各种基本使用依据 ,在这篇文章里,亲戚亲戚亲们是通过Hystrix调用正常工作的服务,也倘若说,Hytrix的保护机制并不

2020-04-04

好运三分快3规律_盆花“感冒”了或有“杂草”该怎么办?

好运三分快3规律其他养花人好运三分快3规律,一到春季3月份,天气刚刚刚开始回暖,就急于将盆花搬到室外,曾经做对盆花很不利。意味着在室内越冬的盆花,总是是在温度比较高的环境中生长

2020-04-04

腾讯1分彩交流群_2018年即将过去,兰州中医白癜风医院伴随患者坚持治疗白癜风

 随着时间的快速飞逝,仿佛事先到来的2018年转眼间也将进入尾声。而兰州中医白癜风医院为让更多白癜风腾讯1分彩交流群患者在2018年最后的时间中,坚持治疗白癜风。从而真正走向健

2020-04-04