Python 实现股票指标计算——BOLL布林线

1 公式

中轨线 = N日的移动平均线,N一般取20

上轨线 = 中轨线 + X倍的标准差,X一般取2

下轨线 = 中轨线-Y倍的标准差, Y一般取2

2 数据准备

我们以科创50指数 000688 为例,指数开始日期为2019-12-31,数据格式如下:

3 计算过程

3.1手动计算
def boll(df, N=20, X=2, Y=2):
    '''
    计算给定数据集的布林带指标(Bollinger Bands)。

    参数:
    ------
    df : pandas.DataFrame
        包含日期('date')和收盘价('close')列的DataFrame。
    N : int, 可选
        移动平均线的周期数,用于计算布林带上中下轨。默认值为20。
    X : float, 可选
        上轨计算时使用的标准差乘数。默认值为2。
    Y : float, 可选
        下轨计算时使用的标准差乘数。默认值为2。在大多数情况下,X和Y相同。

    返回:
    ------
    sorted_df : pandas.DataFrame
        扩展了布林带上轨('upper')、中轨('boll')和下轨('lower')列的原始DataFrame。

    注意:
    ------
    函数首先将'date'列转换为datetime类型,然后对DataFrame按日期进行排序,
    确保计算移动平均和标准差时数据是按时间序列排列的。
    '''

    # 将'date'列转换为datetime类型
    df['date'] = pd.to_datetime(df['date'])

    # 按'date'列对DataFrame进行排序
    sorted_df = df.sort_values('date')

    # 计算布林带中轨,即N周期的收盘价移动平均值
    sorted_df['boll'] = sorted_df['close'].rolling(window=N).mean()

    # 计算布林带上轨,即中轨加上X倍的标准差
    sorted_df['upper'] = sorted_df['boll'] + X * sorted_df['close'].rolling(window=N).std()

    # 计算布林带下轨,即中轨减去Y倍的标准差
    sorted_df['lower'] = sorted_df['boll'] - Y * sorted_df['close'].rolling(window=N).std()

    # 返回扩展后的DataFrame
    return sorted_df
3.2 使用talib库
import talib
 
upper, boll, lower = talib.BBANDS(
    df['close'], timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)

boll_df = pd.concat([df, boll, upper, lower], axis=1).rename(
    columns={0: 'boll', 1: 'upper', 2: 'lower'})

4 注意事项

手动计算和talib计算结果有差异,手动计算结果与国内证券软件上的布林线一致,主要差别在于标准差的计算

手动计算总体标准差除以n
talib样本标准差除以n-1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/796228.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python - Word转TXT文本,或TXT文本转Word

Word文档(.doc或.docx)和纯文本文件(.txt)是两种常用的文件格式。Word文档通常用于复杂的文档处理和排版,而纯文本文件则用于存储和传输纯文本信息。了解如何在这两种格式之间进行转换能提高工作效率,并便于…

学习笔记——动态路由——IS-IS中间系统到中间系统(特性之路由渗透)

4、路由渗透 IS-IS中Level-1-2路由器是连接Level-1区域与骨干网络的桥梁,它会将到达所在Level-1区域的路由信息通过Level-2 LSP通告到骨干网络,从而让其他的Level-1-2或Level-2路由器学习到相关路由,然而缺省时它却并不将到达其他Level-1区域的路由信息以及到达Lev…

《昇思25天学习打卡营第15天|计算机视觉-SSD目标检测》

FCN图像语义分割&ResNet50迁移学习&ResNet50图像分类&ShuffleNet图像分类&SSD目标检测 SSD目标检测 模型简介 SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测…

Kithara与OpenCV (二)

Kithara使用OpenCV QT 进行特征检测 目录 Kithara使用OpenCV QT 进行特征检测OpenCV 特征检测简介Qt应用框架简介项目说明关键代码抖动测试测试平台:测试结果:结论 OpenCV 特征检测简介 OpenCV是一个开源的计算机视觉库,提供了各种图像处理…

Web开发 —— 放大镜效果(HTML、CSS、JavaScript)

目录 一、需求描述 二、实现效果 三、完整代码 四、实现过程 1、HTML 页面结构 2、CSS 元素样式 3、JavaScript动态控制 (1)获取元素 (2)控制大图和遮罩层的显隐性 (3)遮罩层跟随鼠标移动 &…

麦克风设计指南

前言: 本指南基于乐鑫的 ESP32-S3 系列语音开发板。 整机 mic 要求 麦克风电器性能推荐 麦克类型:全向型 MEMS 麦克风 SMD-4P,2.8x1.9mm MEMS 麦克风 顶视图 MEMS 麦克风 底视图 灵敏度 1 Pa 声压下模拟麦灵敏度不低于 -38 dBV,数字麦灵…

CSS技巧专栏:一日一例 5-纯CSS实现背景色从四周向中心填充的按钮特效

特此说明 本专题专注于讲解如何使用CSS制作按钮特效。前置的准备工作和按钮的基本样式,都在本专栏第一篇文章中又详细说明。自本专栏第四篇文章起,本专栏都将直接跳过前面的内容,不再重复复制,需要了解按钮基础样式的同学,请移步:《CSS技巧 - 一日一例 (1):会讨好的热…

全渠道AI智能商品管理软件平台 助力零售品牌占领技术高地

关于7thonline第七在线 1999年创立于纽约,7thonline第七在线全渠道AI智能商品管理平台,以先进的数学算法模型、人工智能和机器学习技术为核心驱动力,融合了众多零售商品管理的卓越实践经验,精心打造出一套深度适配零售业务场景的自…

微信小程序---npm 支持

一、构建 npm 目前小程序已经支持使用 npm 安装第三方包,但是这些 npm 包在小程序中不能够直接使用,必须得使用小程序开发者工具进行构建后才可以使用。 为什么得使用小程序开发者工具需要构建呢❓ 因为 node_modules 目录下的包,不会参与…

PG大会周五于杭州举办;Pika发布4.0;阿里云MySQL上线Zero-ETL集成能力

重要更新 1. PostgreSQL中国技术大会举行12日(周五)于杭州举办,是PostgreSQL社区年度的大会,举办地点:杭州君尚云郦酒店(杭州市上城区临丁路1188号),感兴趣的可以考虑现场参加 ( [1]…

git常用命令及git分支

git常用命令及git分支 git常用命令设置用户签名初始化本地库查看本地库状态将文件添加到暂存区提交到本地库查看历史记录版本穿梭 git分支什么是分支分支的好处分支的操作查看分支创建分支切换分支删除分支合并分支合并冲突 git常用命令 设置用户签名 //设置用户签名 git con…

Ubuntu 修改~/.bashrc终端选择是否使用annconda环境

首先需要明白的是anaconda虽然自带了python,但安装anaconda后并不会覆盖掉你原来的python(pip也是一样的),但安装anaconda后它会把自己的bin目录(里面有python、pip、conda等命令)加到PATH上,而…

Math/System/Runtime/Object

1、Math (1)常用方法 类型方法名说明public static intabs (int a)返回整数的绝对值public static doublepow (double a,double b)计算a的b次幂的值public static int max (int a,int b) 获取两个int值中的较大值public static intmin (int a,int…

vue学习day07-scoped样式冲突、data是一个函数、props详解、组件通信、非父子通信-event bus 事件总线

19、scoped样式冲突 (1)默认情况:写在组件中的样式会全局生效,因此会很容易造成多个组件之间的样式冲突问题。 1)全局样式:默认组件中的样式会作用到全局 比如: 当只有box1设置边框时&#…

Unity如何查找两个transform最近的公共parent

查找两个子对象最近的父对象 一、问题背景二、解决方案思路核心算法代码 三、总结 一、问题背景 最近看到个关于Unity的问题:在Hierarchy面板中的游戏对象,给定两个子物体transform对象,如何查找这两个transform最近的公共父级parent。感觉挺…

应用帕累托原则学习新的编程语言

在本文中,我将讨论如何应用帕累托原则快速学习一门新的编程语言,并在加深对编程语言的理解的同时开始解决实际问题。 什么是帕累托原则? 帕累托原则,又称 80/20 法则,指出对于许多结果而言,大约 80% 的后…

【简历】某电子科技大学:前端实习简历指导,面试通过率低

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 这是一份一本某电子科技大学的同学简历,投递的职位就是我们前端,但是因为学校是一本,我们说主要主体在…

【Lora模型推荐】Stable Diffusion创作具有玉石翡翠质感的图标设计

站长素材AI教程是站长之家旗下AI绘图教程平台 海量AI免费教程,每日更新干货内容 想要深入学习更多AI绘图教程,请访问站长素材AI教程网: AI教程_深度学习入门指南 - 站长素材 (chinaz.com) logo版权归各公司所有!本笔记仅供AIGC…

Cesium 点选3DTiles泛光特效

Cesium 点选3DTiles泛光特效 原理:和上一篇点选Entity相同 直接上效果:

StarRocks部署高可用 FE 集群

一、准备工作 1.1 部署规划 这里我打算部署存算一体模式,三节点。即三个FE节点,三个BE节点。假设三台IP分别为:10.10.10.50、10.10.10.51、10.10.10.52 我将采用三台centos7.9进行部署,单台配置为128C 256G 3T。 1.2 服务器检查…