量化交易——传统技术分析布林通道BollingerBands的原理及实现

article/2025/9/19 10:35:14

布林通道

布林通道线是根据统计学的标准差来计算的,其具体可由上中下三条曲线展示。其中上下两线分别代表上升压力线和下降支撑线,故而可以根据K线图是否突破布林曲线来判断较好的买卖节点。三条曲线计算方法如下:

中轨线(MID)=收盘价的M日移动平均线;
上轨线(UPER)=中轨线+N倍的标准差;
下轨线(LOWER)=中轨线-N倍的标准差.、

实现

某些分析过程可以参考前面的博文,量化交易——传统技术分析相对强弱指数RSI的原理及实现,这里不细讲。

import numpy as np
import math
import random
import json
import matplotlib.pyplot as plt
import sys
sys.setrecursionlimit(10000)#date|open|high|low|close|volume|adjsuted def get_stock_hist(num):s_his=np.genfromtxt('C:/Users/Haipeng/Desktop/python/Korea/Korea_{:03d}.csv'.format(num), delimiter=',')s_hi=s_his[1:][:]days=s_hi.shape[0]this_stock = []for i in range(1,days,1):this_day = [i]for k in range(1,7):this_day.append(s_hi[i][k])this_stock.append(this_day)print 'Maximum date is ',len(this_stock)return this_stockdef get_price(D, p_tpe):if p_tpe=='close':pos=4;elif p_tpe=='open':pos=1;elif p_tpe=='high':pos=2;elif p_tpe=='low':pos=3;else:pos=5price=stock_hist[D-1][pos];return pricedef get_ma(D, N):p_used=np.zeros(N);for i in range(1,N+1,1):p_used[i-1]=stock_hist[(D-1)-(i-1)][4];ma=np.mean(p_used);return madef get_mar(fro,to,N):ma = []for i in range(fro,to+1):ma.append(get_ma(i,N))return ma
#Date\Open\High\Low\Close
def get_tuples(fro,to):res =[]for d in range(fro,to+1):tmp = []tmp.append(d)tmp.append(get_price(d,'open'))tmp.append(get_price(d,'high'))tmp.append(get_price(d,'low'))tmp.append(get_price(d,'close'))        res.append(tmp)return resdef get_volume(fro,to):res = []for d in range(fro,to+1):num = 1try:if get_price(d,'close')<get_price(d-1,'close'):num = -1except:passres.append(num*get_price(d,'volume'))return res  
# BB Band实现
def get_BB(D,N):MD = 0.0UP = 0.0DN = 0.0SD = 0.0for i in range(N):MD += get_price(D-i,'close')MD = MD/Nfor i in range(N):SD += math.pow(MD-get_price(D-i,'close'),2)SD = math.sqrt(SD/N)UP = MD + 2*SDDN = MD - 2*SDreturn [UP,MD,DN]
def get_bb(fro,to,N):res = [[],[],[]]for d in range(fro,to+1):if d<N:print 'Date number is not larger than N!'breaktmp = get_BB(d,N) res[0].append(tmp[0])res[1].append(tmp[1])res[2].append(tmp[2])return res

绘制k线图及BB指标

绘图代码:

def plot_BB(fro,to):volume = get_volume(fro,to)tmp = get_bb(fro,to,20)up = tmp[0]md = tmp[1]dn = tmp[2]tuples = get_tuples(fro,to)date = [d for d in range(fro,to+1)] fig = plt.figure(figsize=(18,10))p1 = plt.subplot2grid((4,4),(0,0),rowspan=3,colspan=4,axisbg='k') p1.set_title("Bollinger Bands:(20-Day Moving Average)")p1.set_ylabel("Price")p1.plot(date,up,'m')p1.plot(date,md,'b')p1.plot(date,dn,'y')p1.legend(('UP','MD','DN'))p1.grid(True,color='w')candlestick_ohlc(p1, tuples, width=0.7,colorup='r',colordown="g")p2 = plt.subplot2grid((4,4),(3,0),colspan=4,axisbg='c') p2.set_ylabel("Volume")colors = []for i in range(len(volume)):if volume[i]<0:colors.append('green')volume[i] = -volume[i]else:colors.append('red')p2.bar(date,volume,color=colors)p2.set_xlabel("Dates")plt.subplots_adjust(hspace=0)plt.show()# show the plot on the screen
stock_hist = get_stock_hist(18)
plot_BB(1250,1520)

图示结果1:
这里写图片描述
缩短时间范围:

#得图2
plot_BB(220,320)

这里写图片描述
我们发现,上图有较大的不合理的跳跃。这是什么原因呢?仔细观察发现图像是在第278天发生了突变,应该就是数据出了问题。现在打开对应股票的CSV数据如下,果然:

这里写图片描述

可知,当天数据丢失了一位数,这才导致了以上的突变。所以在接下来深入挖掘数据时要考虑减少数据错误带来的影响。


http://chatgpt.dhexx.cn/article/P1e5jksm.shtml

相关文章

Lyndon的量化修炼之路——布林通道优化策略(二)

策略参数优化 //期市妖风大&#xff0c;小心被刮飞。本文不构成任何实质性建议&#xff0c;也不对任何依此进行的交易结果负责参数优化几乎是优化每一个量化交易策略的必经之路&#xff0c;对于参数优化的基本方法已经在双均线优化策略中介绍过&#xff0c;再次不多做介绍&…

【Python量化】布林带策略

文章目录 一、计算布林带三、构建策略&#xff0c;计算持仓头寸序列和买卖信号序列四、计算策略收益五、绘制交易信号 此文章首发于公众号&#xff1a;Python for Finance 链接&#xff1a;https://mp.weixin.qq.com/s/CJR2gwXkkzFRavZ8I98qdw 布林带&#xff08;BOLL&#x…

Lyndon的量化修炼之路——布林通道优化策略(一)

//期市妖风大&#xff0c;小心被刮飞。本文不构成任何实质性建议&#xff0c;也不对任何依此进行的交易结果负责经过某位大佬的提醒&#xff0c;原来大白有另外的含义&#xff0c;侵权了侵权了&#xff08;原谅我孤陋寡闻&#xff09;&#xff0c;所以还是简单点好。 我也不知…

现货黄金指标精讲(布林通道)

现货黄金的特点在于可以多空双向交易&#xff0c;如果投资者能精通一到两种的技术分析手段&#xff0c;必定能大幅提高交易的成功率。布林通道指标不仅能揭示金价运行的趋势&#xff0c;还能提供清晰的买卖信号&#xff0c;帮助长、中、短线的投资者提高交易决策的质量。 一、布…

布林通道 Bollinger Bands——非炒股向个人学习笔记

有一组数据&#xff0c;大多数是以时间序列的数据&#xff0c;如年、月、日为度量的某指标变化。&#xff08;上图的绿线不用管&#xff09; 布林通道的作用是描述数值的近期波动程度&#xff0c;具体表现就表现在轨道的收窄与拓宽上。 一、基本概念 作图需设定的变量&#x…

eclipse安装教程与使用教程

第一首先在电脑的浏览器中输入“eclipse官网”。 然后在网页中点击进入eclipse的官方下载网站。 2 第二然后再点击页面右边的“download”。 在弹出的页面下面点击“download packages”。 3 第三然后在下面找到“eclipse IDE for java developers”的选项。 在选项右边有…

eclipse基础实用教程

一、打开eclipse&#xff0c;创建java文件 1.点击eclipse.exe文件 Workspace&#xff1a;&#xff08;这个是你写的代码存放位置&#xff0c;可以自己选择创建一个文件夹&#xff09; 2.新装的eclipse中在new里面未找到java project&#xff0c; 点击Open Perspective&#…

eclipse使用教程(图文)

很多人都知道要用eclipse来做java开发&#xff0c;但很多的新手朋友却不知道怎么下载和安装eclipse。下面给你介绍一下怎么下载和安装eclipse来用于自己的学习或者项目开发&#xff0c; 很多人都知道要用eclipse来做java开发&#xff0c;但很多的新手朋友却不知道怎么下载和安装…

Eclipse详细安装教程

Eclipse安装教程 前言一、Eclipse是什么&#xff1f;二、安装步骤1. Eclipse下载下载网址 2. Eclipse安装 前言 Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。 一、Eclipse是什么&#xff1f; Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言…

Eclipse最新最简最详细安装教程

Eclipse最新最简最详细安装教程 1、首先打开官方地址&#xff08;见下面&#xff09; Eclipse官方下载地址&#xff1a;点击打开官方链接 2、点击红箭头指向的红框中的“Download Packages”。 3、出现新的页面之后往下翻找到并点击红箭头指向的红色矩形的部分Eclipse IDE f…

Eclipse安装教程 ——史上最详细安装Java Python教程说明

Eclipse安装教程 ——史上最详细安装Java&Python教程说明 (Win7_64位 Eclipse 64位 JDK_8u131_64位 python2.7.8 PyDev5.7.0插件) 适用操作系统&#xff1a;Win7 64位 所需要的软件以及插件&#xff1a;Eclipse 64位、JDK_8u131_64位、python2.7.8、PyDev5.7.0插件 …

Eclipse 教程

Eclipse的使用 前言一、Eclipse的介绍二、下载与安装1.下载2.安装 三、基本使用步骤1.启动2.创建项目3. 创建包及class文件 四、一些使用技巧1. 快速生成构造方法2.自动补全3. 快速生成get-set方法4. 查找某变量所在位置,或者替换某变量的变量名5. 快速导入包6.合理利用eclipse…

视频消重处理,视频原创怎么做,视频处理软件

现在的新传媒行业&#xff0c;有很多小伙伴搬过来的视频都不太清楚怎么把它变成自己的视频&#xff0c;也就是消重&#xff0c;现在有一款工具可以达到这种消重原创&#xff0c;像某头条通过率在96%以上了 这是一个视频消重处理软件&#xff0c;现在给大家说说功能和页面 1&…

视频合成-moviepy

最近发现&#xff0c;公司在进行视频合成的时候&#xff0c;部分业务不是在客户端进行合成&#xff0c;而是在后端进行合成&#xff0c;让我有点惊讶&#xff0c;立马问开发要了代码&#xff0c;想要看看到底在后端如何处理的。 学习文档&#xff1a;https://blog.csdn.net/uc…

计算机图像视频处理

计算机图像视频处理 计算机视觉概论 计算机视觉概念 计算机图像处理&#xff0c;也即数字图像处理(Digital Image Processing)&#xff0c; 是指将图像信号转换成数字信号并利用计算机对其进行处理的过程&#xff0c;是通过计算机对图像进行去除噪声、增强、复原、分割、提取…

视频处理

1.视频处理 在视频压缩前后&#xff0c;对视频图像质量增强的操作视频编解码系统输出的图像主观质量不仅与压缩算法的性能有关&#xff0c;还受视频处理的影响压缩之前对视频的处理称作预处理&#xff08;Pre-processing&#xff09;压缩之后对视频的处理称作后处理&#xff0…

基于PythonOpenCv的视频图像处理

博主简介 博主是一名大二学生&#xff0c;主攻人工智能研究。感谢让我们在CSDN相遇&#xff0c;博主致力于在这里分享关于人工智能&#xff0c;c&#xff0c;Python&#xff0c;爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主&#xff0c;博主会继续更新的&#xff0c…

openpose如何处理视频

openpose提供了官方的bin文件&#xff0c;可以通过shell直接处理视频&#xff0c; 此外还提供了一系列的demo文件&#xff0c;用于处理图片文件。 那如何修改官方的demo用来处理视频呢&#xff1f; 找了不少别人的教程都是通过 cv2.dnn.readNetFromCaffe(protoFile, weight…

使用python的视频处理

本文探讨的是使用python对视频进行如下操作&#xff1a; 将待处理的视频分割成帧对每一帧进行处理对处理后的帧合并得到最终的视频 为了方便接下去的实验过程&#xff0c;读者必须具备如下的工具&#xff1a; 1、依赖包python-opencv 2、借助工具ffmpeg import cv2 import …

VideoProc v4.4 多功能视频处理工具

前言 VideoProc是WinX/MacX HD Video Converter Deluxe的进阶版本&#xff0c;在功能上更上一层。VideoProc全方位整合了影片转档、影片压缩、&#xff08;YouTube&#xff09;影片下载、影片剪辑的功能&#xff0c;使你在Windows上管理不同的多轨道、SD、HD、4K影片的绝佳方案…