根据指定股票通道指标的算法 , 能用过去一定时间段的交易数据绘制出上下两条通道线 , 即价格通道里的上下轨道 。一般来说 , 当股价向上突破上轨时 , 即预测后市将涨 , 反之当股价向下突破下轨时 , 即预测后市将跌 。
这里将根据若干算法 , 计算并绘制多种价格通道 , 从中大家一方面可以积累股市分析的经验 , 另一方面还能进一步掌握基于pandas的数据分析方法 , 以及基于matplotlib的可视化技巧 。
1 计算并绘制唐奇安通道唐奇安通道是由上阻力线、下支撑线和中心线这三条线组成 。
上阻力线 = 过去N天的最高价
下支撑线 = 过去N天的最低价
中心线 =(上线 + 下线)除以 2
在实际的分析场景里 , N的取值一般是20 , 在如下的DisplayDonChannel.py范例中 , 就用20天为周期 , 来计算并绘制唐奇安通道 。
01# coding=utf-802import pandas as pd03import matplotlib.pyplot as plt04from mpl_finance import candlestick2_ochl05# 读数据06stockDf = pd.read_csv('D:/work/data/ch11/600530.ss.csv')07fig, ax = plt.subplots()08candlestick2_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')09stockDf['up'] = stockDf['High'].rolling(window=20).max()10stockDf['up'].plot(color="green",label='上阻力线')11stockDf['down'] = stockDf['Low'].rolling(window=20).min()12stockDf['down'].plot(color="navy",label='下支撑线')13stockDf['mid'] = (stockDf['up']+stockDf['down'])/214stockDf['mid'].plot(color="red",label='中心线')15ax.set_ylabel("收盘价(元)")16ax.grid()# 带网格线17ax.legend()# 绘制图例18#设置x轴文字间隔和旋转角度19index=stockDf.index[stockDf.index%7==0]20xtics=stockDf['Date'][stockDf.index%7==0]21plt.xticks(index,xtics)22plt.setp(plt.gca().get_xticklabels(), rotation=30)23plt.rcParams['font.sans-serif']=['SimHei']24plt.title("600530交大昂立20天唐奇安通道效果图")25plt.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绘制股票唐奇安通道,布林带通道和鳄鱼组线](http://img.jiangsulong.com/220421/055U96161-0.jpg)
文章插图
2 计算并绘制布林带通道和上文描述的唐奇安通道类似 , 布林带通道也是通过上阻力线、下支撑线和中心线来绘制价格通道 , 这里的三条线算法如下所示 。
中心线 = N日移动均线
上阻力线 = 中心线+两倍过去N天收盘价的标准差
下支撑线 = 中心线-两倍过去N天收盘价的标准差
而N的取值一般也是20 。在如下的DisplayBollingerBands.py范例中 , 将演示计算并绘制20日周期布林带通道的做法 。
01# coding=utf-802import pandas as pd03import matplotlib.pyplot as plt04from mpl_finance import candlestick2_ochl05# 读数据06stockDf = pd.read_csv('D:/work/data/ch11/600530.ss.csv')07fig, ax = plt.subplots()08candlestick2_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')09stockDf['mid'] = stockDf['Close'].rolling(window=20).mean()10stockDf['std'] = stockDf['Close'].rolling(window=20).std()11stockDf['up'] = stockDf['mid'] + 2*stockDf['std']12stockDf['down'] = stockDf['mid'] - 2*stockDf['std']13stockDf['up'].plot(color="green",label='上阻力线')14stockDf['down'].plot(color="navy",label='下支撑线')15stockDf['mid'].plot(color="red",label='中心线')16ax.set_ylabel("收盘价(元)")17ax.grid() # 带网格线18ax.legend()# 绘制图例19#设置x轴文字间隔和旋转角度20index=stockDf.index[stockDf.index%7==0]21xtics=stockDf['Date'][stockDf.index%7==0]22plt.xticks(index,xtics)23plt.setp(plt.gca().get_xticklabels(), rotation=30)24plt.rcParams['font.sans-serif']=['SimHei']25plt.title("600530交大昂立20天布林带通道效果图")26plt.show()
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Excel里鲜为人知的“照相机”,竟然这么好用
- 如何避免过度设计,正确地使用设计模式?
- 什么是咏春拳 咏春拳有用吗
- 使用微软的 ProcDump 调试 Linux 进程
- ROS 的常用命令行工具
- 如何为机器学习工程设计Python接口
- 那些前端开发需要掌握的:Vuex基础使用方法
- 猴菇丁香茶有副作用吗,吃茶树菇上火吗
- 荷叶泡茶的作用有哪些,荷叶泡茶的功效与作用有哪些
- 壶承是做什么用的,茶仓是做什么用的