• 写在前面
  • 布林线(BOLL)技术指标简介
  • BOLL公式详解
    • 参数设置
  • 用到的主要Python库
  • Python代码&详解
  • 参考文献
  • 推荐阅读

写在前面

本文代码部分总结自Packt出版社的《Learn Algorithmic Trading - Fundamentals of Algorithmic Trading》(图1)。现将该书的布林线技术指标部分进行总结,并对数据处理及图形绘制等函数做了相应改动,供有需要的读者学习研究。

图1

布林线(BOLL)技术指标简介

布林线(Bollinger Bands,BOLL)又称布林带,是约翰·布林(John Bollinger)提出的一种行情价格频带分轨,是根据统计学中的标准差原理,设计出来的一种非常实用的技术指标。布林线也建立在移动平均线之上,但包含最近的价格波动,使指标更能适应不同的市场条件。布林线通常可由上轨(压力线)、中轨(行情平衡线)和下轨(支撑线)三条轨道线组成,属于通道式指标或路径式指标[1]

BOLL公式详解

参数设置

n:n:n: 时间周期数
标准差σ\sigmaσSTDEV):
σ=∑i=1n(Pi−MA)2n\sigma=\sqrt\frac{\sum_{i=1}^{n}(P i-MA)^{2}}{n}σ=n∑i=1n​(Pi−MA)2​​
标准差因子β\betaβ(STDEV Factor):
β=2\beta=2β=2
中界线:nnn日内收盘价的算术平均
阻力线:中界线+++标准差因子×\times×标准差
支撑线:中界线−-−标准差因子×\times×标准差

BBANDMid=MAn−periodsBBANDUp=BBANDMid+β×σBBANDLow=BBANDMid−β×σ\begin{array}{l} B B A N D_{M i d}=MA_{n-p e r i o d s} \\ B B A N D_{U p}=B B A N D_{M i d} + \beta \times \sigma \\ B B A N D_{L o w}=B B A N D_{M i d} - \beta \times \sigma \\ \end{array}BBANDMid​=MAn−periods​BBANDUp​=BBANDMid​+β×σBBANDLow​=BBANDMid​−β×σ​

用到的主要Python库

Python绘图库Matplotlib 3.2.1
Python金融数据处理库Pandas 1.0.2
Python矩阵计算库Numpy 1.16.0

Python代码&详解

# 导入及处理数据
import pandas as pd
import numpy as np
# 绘图
import matplotlib.pyplot as plt
# 设置图像标签显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
import matplotlib as mpl
# 解决一些编辑器(VSCode)或IDE(PyCharm)等存在的图片显示问题,
# 应用Tkinter绘图,以便对图形进行放缩操作
mpl.use('TkAgg')# 导入数据并做处理
def import_csv(stock_code):df = pd.read_csv(stock_code + '.csv')df.rename(columns={'date': 'Date','open': 'Open','high': 'High','low': 'Low','close': 'Close','volume': 'Volume'},inplace=True)df['Date'] = pd.to_datetime(df['Date'], format='%Y/%m/%d')df.set_index(['Date'], inplace=True)return dfstock_code = 'sh600519'
# 绘制数据的规模
scale = 500
df = import_csv(stock_code)[-scale:]# SMA:简单移动平均(Simple Moving Average)
time_period = 20  # SMA的计算周期,默认为20
stdev_factor = 2  # 上下频带的标准偏差比例因子
history = []  # 每个计算周期所需的价格数据
sma_values = []  # 初始化SMA值
upper_band = []  # 初始化阻力线价格
lower_band = []  # 初始化支撑线价格# 构造列表形式的绘图数据
for close_price in df['Close']:# history.append(close_price)# 计算移动平均时先确保时间周期不大于20if len(history) > time_period:del (history[0])# 将计算的SMA值存入列表sma = np.mean(history)sma_values.append(sma)  # 计算标准差stdev = np.sqrt(np.sum((history - sma) ** 2) / len(history))  upper_band.append(sma + stdev_factor * stdev)lower_band.append(sma - stdev_factor * stdev)# 将计算的数据合并到DataFrame
df = df.assign(收盘价=pd.Series(df['Close'], index=df.index))
df = df.assign(中界线=pd.Series(sma_values, index=df.index))
df = df.assign(阻力线=pd.Series(upper_band, index=df.index))
df = df.assign(支撑线=pd.Series(lower_band, index=df.index))# 绘图
ax = plt.figure()
# 设定y轴标签
ax.ylabel = '%s price in ¥' % (stock_code)df['收盘价'].plot(color='k', lw=1., legend=True)
df['中界线'].plot(color='b', lw=1., legend=True)
df['阻力线'].plot(color='r', lw=1., legend=True)
df['支撑线'].plot(color='g', lw=1., legend=True)
plt.show()

所得图像如下:

参考文献

[1] 麻道明.如何看懂技术指标.北京:中国宇航出版社,2015.207页

[1] Sebastien Donadio,Sourav Ghosh.Learn Algorithmic Trading - Fundamentals of Algorithmic Trading.Birmingham:Packt Press,2019.P59-62.

推荐阅读

用mplfinance库绘制股票K线、均线图

Python绘制MACD指标图

Python绘制RSI相对强弱指标图

Python绘制BOLL布林线指标图相关推荐

  1. Python绘制RSI相对强弱指标图

    写在前面 相对强弱指标(RSI)简介 RSI公式详解 参数设置&公式 用到的主要Python库 Python代码&详解 参考文献 推荐阅读 写在前面 本文代码部分总结自Packt出版社 ...

  2. Python绘制股票K线图

    目录 1 股票K线图知识了解 2 用Python绘制股票K线图 2.1 安装绘制K线图的mpl_finance库 2.2 引入相关库 2.3 用Tushare库获取股票基本数据 2.4 日期格式调整及 ...

  3. 策略验证_指标买点分析技法_运用boll布林线指标选择买点

    写在前面: 1. 本文中提到的"股票策略校验工具"的具体使用操作请查看该博文: 2. 文中知识内容来自书籍<同花顺炒股软件从入门到精通> 3. 本系列文章是用来学习技法 ...

  4. 量化投资常用技能——指标篇2:详解BOLL(布林线)指标,及其代码实现和绘图

    量化投资常用技能 系列文章目录 我们已经介绍了三篇关于量化投资方面绘图的文章和一篇指标类的推导和介绍的文章,大家有兴趣可以了解一下 绘图篇 量化投资常用技能--绘图篇 1:绘制股票收盘价格曲线和och ...

  5. python画k线_python画k线,python绘制动态k线及均线

    内容导航: Q1:k线图上怎么画线 一般你看K线软件都有画图功能,以同花顺为例,在上方菜单栏找到画图,点击,会在菜单栏下方一行或者屏幕最右边一列出现相应的画图工具. Q2:求教使用python绘制K线 ...

  6. Python绘制加强版K线图:增加均线及成交量

    在之前,我们讲解了如何用Python绘制K线图.当时就有人问能否加入均线元素,当然能啦!不光均线,今天我还要把成交量给加上去. 获取数据并加工 为了计算年线(250日均线),我们需要保证数据至少在一年 ...

  7. 常用技术指标之一文读懂BOLL布林线指标

    什么是布林线指标? 布林线BOLL指标(Bollinger Bands)是股市技术分析的常用工具之一,由美国金融分析师John Bollinger根据移动平均线和统计学中的标准差原理于1980年代设计 ...

  8. BOLL布林线指标-股价的中长期走势

    BOLL指标可用于确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称为布林带.BOLL适用于预测股价运动的中长期走势,其"股价信道"对预测未来行情的走势起着重 ...

  9. python绘制动态k线及均线_Python绘制股票移动均线的实例

    1. 前沿 移动均线是股票最进本的指标,本文采用numpy.convolve计算股票的移动均线 2. numpy.convolve numpy.convolve(a, v, mode='full') ...

最新文章

  1. Linux下,使用nginx+ffmpeg+video.js实现直播效果(含centos7环境配置步骤)
  2. 使用.Net Core CLI命令dotnet new创建自定义模板
  3. 我的博客园css样式
  4. 机器学习重大挑战:坏数据和坏算法正在毁掉你的项目
  5. raspberry pi_您应该选择哪种Raspberry Pi?
  6. Spring Security OAuth2 授权失败(401)
  7. 小技巧 ----- Java中指定保留几位小数
  8. 踩坑合集(1)——虚拟机桥接模式下的连网问题
  9. jQuery基础-定位与修改
  10. C语言实现调用python绘图
  11. ABP教程-打造一个《电话簿项目》-目录-MPA版本-基于ABP1.13版本
  12. Oracle转PostgreSQL
  13. 光纤跳线接口_综合布线与弱电工程:跳线、尾纤、光纤接口,一文讲明白
  14. 白底图片转换为蓝底图片
  15. 从今开始,两耳不闻窗外事,一心搞dp
  16. iphone的致命硬伤
  17. 《Excel 数据之美--科学图表与商业图表的绘制》
  18. 图片变色HSV-shader
  19. Dx bad class file magic (cafebabe) or version (0033.0000) 导致 NoClassDefFoundError 的问题
  20. Lustre I/O性能特点与最佳实践

热门文章

  1. ChatGPT报错“Sorry You Have Been Blocked“ 解决办法
  2. Halcon Solution Guide 3-C 3D Vision 学习总结(1)
  3. powerdesigner 使用excel 批量导入创建表
  4. Nodejs+express+vue在线音乐播放器网站
  5. nvme 做软raid0
  6. 一个非python的电脑打印机连接过程分享
  7. npm命令--安装依赖包--用法/详解
  8. css3圆角实现奥运五环标志
  9. K210入门 MAIX DOCK——点灯(二)
  10. java大文件导入_java导入大文件数据的解决方案