本范例和之前的唐奇安通道的范例很相似 , 区别主要集中在第9行到第15行 。在第9行里 , 先用rolloing和 mean方法计算过去20天的均值 , 以此作为中心线 , 再通过第10行的rolling和std方法 , 计算过去20天收盘价的标准差 , 在此基础上再通过第11行和第12行的代码计算上阻力线和下支撑线 。
完成计算后 , 是通过第13行到第15行的plot方法绘制三条线 , 同时用label参数设置了图例 。运行本范例 , 能看到如下图所示的效果 。其中布林带通道的宽度是由过去20天收盘价的标准差决定 , 也就是说 , 如果过去20天收盘价波动比较大 , 那么布林带通道就比较宽 , 反之就比较狭窄 。而且 , 虽然有个别价格向上或向下突破通道 , 但未形成“有效突破” , 所以后期价格依然在通道内波动 , 由此大家能感受到“上阻力线”和“下支撑线”的“阻力”和“支撑”效果 。

文章插图
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-802import pandas as pd03import matplotlib.pyplot as plt04from mpl_finance import candlestick2_ochl05#计算各种SMMA值06def setSMMAVal(df, period):07for i in range(len(df)):08if i<period:09df['SMMA' + str(period)] = df.ix[i,'MA'+str(period)]10else: #按算法计算SMMA值11df.ix[i,'SMMA'+ str(period)]=df.ix[i,'MA'+ str(period)] + (df.ix[i,'Close'] - df.ix[i-1,'SMMA'+ str(period)])/period12return df在第6行的setSMMAVal方法里 , 是根据参数period指定的周期 , 计算各种SMMA值 。具体而言 , 在第7行的for循环里 , 如果当前遍历的索引号小于周期值 , 则设置SMMA值为当天的MA均值 , 否则的话 , 则通过第11行的代码 , 按SMMA的算法 , 计算当天的值 。请注意这里的列名是动态拼接的 , 比如在第9行 , 如果当前参数是5 , 那么其实是用df['MA5'] 的值来填充df['SMMA' + str(period)]值 。
13#计算三条鳄鱼组线14def setCrocodileVal(df):15#用shift方法 , 把数据顺延16df['up'] = df['SMMA5'].shift(3)17df['mid'] = df['SMMA8'].shift(5)18df['down'] = df['SMMA13'].shift(8)19return df【用Python绘制股票唐奇安通道,布林带通道和鳄鱼组线】在得到SMMA的值以后 , 可以通过第14行的setCrocodileVal方法来计算3条鳄鱼组线的值 , 这里的技巧是shift方法 , 比如在第16行里 , 使用df['SMMA5'].shift(3)代码 , 把当天的SMMA5值向后顺延3天 , 以此设置上唇线的值 。在第17行和第18行里 , 也是用shift方法 , 顺延对应的SMMA值 , 得到牙齿线和下颚线的值 。20# 读数据21stockDf = pd.read_csv('D:/work/data/ch11/600530.ss.csv')22#算均值23stockDf['MA5'] = stockDf['Close'].rolling(window=5).mean()24stockDf['MA8'] = stockDf['Close'].rolling(window=8).mean()25stockDf['MA13'] = stockDf['Close'].rolling(window=13).mean()26#算三个SMMA值27stockDf = setSMMAVal(stockDf, 5)28stockDf = setSMMAVal(stockDf, 8)29stockDf = setSMMAVal(stockDf, 13)30#计算三个鳄鱼组线的值31stockDf = setCrocodileVal(stockDf)
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Excel里鲜为人知的“照相机”,竟然这么好用
- 如何避免过度设计,正确地使用设计模式?
- 什么是咏春拳 咏春拳有用吗
- 使用微软的 ProcDump 调试 Linux 进程
- ROS 的常用命令行工具
- 如何为机器学习工程设计Python接口
- 那些前端开发需要掌握的:Vuex基础使用方法
- 猴菇丁香茶有副作用吗,吃茶树菇上火吗
- 荷叶泡茶的作用有哪些,荷叶泡茶的功效与作用有哪些
- 壶承是做什么用的,茶仓是做什么用的
