Python 实现 BRAR 指标计算(情绪指标):股票技术分析的利器系列(11)

Python 实现 BRAR 指标计算(情绪指标):股票技术分析的利器系列(11)

    • 介绍
      • 算法公式
    • 代码
      • rolling函数介绍
      • 核心代码
        • 计算BR
        • 计算AR
    • 完整代码


介绍

BRAR 是一种情绪指标,用于衡量特定金融市场中的买卖情绪。它代表着买入意愿相对于卖出意愿的比率。

先看看官方介绍:

BRAR (情绪指标)
用法
1.BR>400,暗示行情过热,应反向卖出;BR<40 ,行情将起死回生,应买进;
2.AR>180,能量耗尽,应卖出;AR<40 ,能量已累积爆发力,应买进;
3.BR 由300 以上的高点下跌至50以下的水平,低于AR 时,为绝佳买点;
4.BR、AR、CR、VR 四者合为一组指标群,须综合搭配使用。

算法公式

BR:SUM(MAX(0,HIGH-REF(CLOSE,1)),N)/SUM(MAX(0,REF(CLOSE,1)-LOW),N)*100;
AR:SUM(HIGH-OPEN,N)/SUM(OPEN-LOW,N)*100;

代码

rolling函数介绍

rolling 函数通常与其他函数(如 meansumstd 等)一起使用,以计算滚动统计量,例如滚动均值、滚动总和等。

以下是 rolling 函数的基本语法:

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
  • window: 用于计算统计量的窗口大小。
  • min_periods: 每个窗口最少需要的非空观测值数量。
  • center: 确定窗口是否居中,默认为 False
  • win_type: 窗口类型,例如 Noneboxcartriang 等,默认为 None
  • on: 在数据帧中执行滚动操作的列,默认为 None,表示对整个数据帧执行操作。
  • axis: 执行滚动操作的轴,默认为 0,表示按列执行操作。
  • closed: 确定窗口的哪一端是闭合的,默认为 None

核心代码

计算BR

BR 是一种技术指标,代表着“买卖气指标”(Buy/Sell Pressure)。BR指标通常用于股票市场的技术分析,旨在衡量买卖双方的力量对价格变动的影响。BR指标的计算涉及到最高价、最低价和收盘价的变动,以及特定周期内的累积运算。

def BR(df, n):high_ref_close = df['HIGH'] - df['CLOSE'].shift(1)high_ref_close = high_ref_close.where(high_ref_close > 0, 0)  # MAX(0, HIGH - REF(CLOSE, 1))sum_high_ref_close = high_ref_close.rolling(window=n, min_periods=1).sum()ref_close_low = df['CLOSE'].shift(1) - df['LOW']ref_close_low = ref_close_low.where(ref_close_low > 0, 0)  # MAX(0, REF(CLOSE, 1) - LOW)sum_ref_close_low = ref_close_low.rolling(window=n, min_periods=1).sum()br = sum_high_ref_close / sum_ref_close_low * 100return br
  1. high_ref_close = df['HIGH'] - df['CLOSE'].shift(1)

    • 这一行计算了当日最高价与前一日收盘价之间的差值。df['CLOSE'].shift(1)表示将收盘价向上平移一行(即前一天的收盘价),然后用当日的最高价减去这个平移后的收盘价,得到的就是当日最高价与前一日收盘价之间的差值。
  2. high_ref_close = high_ref_close.where(high_ref_close > 0, 0) # MAX(0, HIGH - REF(CLOSE, 1))

    • 这一行使用 where 方法将 high_ref_close 中小于等于0的值替换为0。这一步相当于实现了 MAX(0, HIGH - REF(CLOSE, 1)) 这个函数,即取 HIGH - REF(CLOSE, 1) 与 0 中的较大值。
  3. sum_high_ref_close = high_ref_close.rolling(window=n, min_periods=1).sum()

    • 这一行计算了 high_ref_close 在指定窗口大小 n 内的滚动求和。这一步是计算了 BR 公式中分子部分的累加和。
  4. ref_close_low = df['CLOSE'].shift(1) - df['LOW']

    • 这一行计算了前一日收盘价与当日最低价之间的差值。同样地,使用 df['CLOSE'].shift(1) 将收盘价向上平移一行,然后用这个平移后的收盘价减去当日的最低价,得到的就是前一日收盘价与当日最低价之间的差值。
  5. ref_close_low = ref_close_low.where(ref_close_low > 0, 0) # MAX(0, REF(CLOSE, 1) - LOW)

    • 这一行同样使用 where 方法将小于等于0的值替换为0,实现了 MAX(0, REF(CLOSE, 1) - LOW) 这个函数,即取 REF(CLOSE, 1) - LOW 与 0 中的较大值。
  6. sum_ref_close_low = ref_close_low.rolling(window=n, min_periods=1).sum()

    • 这一行计算了 ref_close_low 在指定窗口大小 n 内的滚动求和。这一步是计算了 BR 公式中分母部分的累加和。
  7. br = sum_high_ref_close / sum_ref_close_low * 100

    • 最后一行将分子部分的累加和除以分母部分的累加和,然后乘以100,得到了 BR 指标的值。
计算AR

AR 是一种技术指标,代表“人气指标”(AR,Attention Rate)。AR指标用于衡量特定时间段内股票市场的人气或关注度,这可以提供对市场情绪的一种衡量。

def AR(df, n):sum_high_open = (df['HIGH'] - df['OPEN']).rolling(window=n, min_periods=1).sum()sum_open_low = (df['OPEN'] - df['LOW']).rolling(window=n, min_periods=1).sum()ar = sum_high_open / sum_open_low * 100return ar
  1. sum_high_open = (df['HIGH'] - df['OPEN']).rolling(window=n, min_periods=1).sum()

    • 这一行计算了当日最高价与开盘价之间的差值的累加和。(df['HIGH'] - df['OPEN']) 计算了每日最高价与开盘价之间的差值,然后 .rolling(window=n, min_periods=1) 将这个差值序列进行滚动求和,窗口大小为 nmin_periods=1 表示至少要有一个有效值才进行计算。
  2. sum_open_low = (df['OPEN'] - df['LOW']).rolling(window=n, min_periods=1).sum()

    • 这一行计算了开盘价与当日最低价之间的差值的累加和,方式与上一行类似。
  3. ar = sum_high_open / sum_open_low * 100

    • 最后一行将当日最高价与开盘价之间的差值的累加和除以开盘价与当日最低价之间的差值的累加和,然后乘以100,得到了 AR 指标的值。

完整代码

import pandas as pdimport a_get_datadef BR(df, n):high_ref_close = df['HIGH'] - df['CLOSE'].shift(1)high_ref_close = high_ref_close.where(high_ref_close > 0, 0)  # MAX(0, HIGH - REF(CLOSE, 1))sum_high_ref_close = high_ref_close.rolling(window=n, min_periods=1).sum()ref_close_low = df['CLOSE'].shift(1) - df['LOW']ref_close_low = ref_close_low.where(ref_close_low > 0, 0)  # MAX(0, REF(CLOSE, 1) - LOW)sum_ref_close_low = ref_close_low.rolling(window=n, min_periods=1).sum()br = sum_high_ref_close / sum_ref_close_low * 100return brdef AR(df, n):sum_high_open = (df['HIGH'] - df['OPEN']).rolling(window=n, min_periods=1).sum()sum_open_low = (df['OPEN'] - df['LOW']).rolling(window=n, min_periods=1).sum()ar = sum_high_open / sum_open_low * 100return ardata = {'CLOSE': 填每日收盘的数据,'HIGH': 填每日最高的数据,'LOW': 填每日最低的数据'OPEN': 填每日开盘的数据
}df = pd.DataFrame(data)# 计算BR和AR指标
n = 26  # N的值
df['BR'] = BR(df, n)
df['AR'] = AR(df, n)print(df)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

高考志愿辅助填报系统

高考志愿辅助填报系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

一文搞懂TCP三次握手与四次挥手

什么是TCP协议&#xff1f; TCP&#xff08;Transmission control protocol&#xff09;即传输控制协议&#xff0c;是一种面向连接、可靠的数据传输协议&#xff0c;它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。 面向连接&#xff1a;数据传…

Java智慧工地云综合管理平台SaaS源码 助力工地实现精细化管理

目录 智慧工地系统介绍 1、可视化大屏 2、视频监控 3、Wi-Fi安全教育 4、环境监测 5、高支模监测 6、深基坑监测 7、智能水电监测 8、塔机升降安全监测 智慧工地系统功能模块 1、基础数据管理 2、考勤管理 3、安全隐患管理 4、视频监控 5、塔吊监控 6、升降机监…

泰迪智能科技中职大数据专业建设解决方案

泰迪智能科技基于十余年的数据智能产业实践经验&#xff0c;专注于大数据和人工智能方向&#xff0c;构建“产、岗、课、赛、证、文”融通的特色职业人才培养模式&#xff0c;助力中国职业教育高质量发展。 面相中职学校的大数据岗位群 目前就业市场上&#xff0c;大数据相关…

Python奇幻之旅(从入门到入狱高级篇)——面向对象进阶篇(下)

目录 引言 3. 面向对象高级和应用 3.1. 继承【补充】 3.1.1. mro和c3算法 c3算法 一句话搞定继承关系 3.1.2. py2和py3区别 3.3. 异常处理 3.3.1. 异常细分 3.3.2. 自定义异常&抛出异常 3.3.3. 特殊的finally 3.4. 反射 3.4.1. 一些皆对象 3.4.2. import_modu…

第十四章[面向对象]:14.8:枚举类

一,定义枚举类 1,把一个类定义为枚举类: 只需要让它继承自 enum 模块中的 Enum 类即可。 例如在下面的例子中,Weekday 类继承自 Enum 类, 则表明这是一个枚举类 枚举类的每个成员都由 2 部分组成,分别是 name 和 value, 其中 name 属性值为该枚举值的变量名(如下例中: …

微信小程序 ---- 生命周期

目录 生命周期 1. 小程序运行机制 2. 小程序更新机制 3. 生命周期介绍 4. 应用级别生命周期 5. 页面级别生命周期 6. 生命周期两个细节补充说明 7. 组件生命周期 总结 生命周期 1. 小程序运行机制 冷启动与热启动&#xff1a; 小程序启动可以分为两种情况&#xff0…

flutter插件开发基础教程

前言 虽然现在已经有很多插件了&#xff0c;但是有时候还是需要自己开发一个插件。因此打算学习一下如何开发一个插件。这里只考虑安卓&#xff0c;安卓使用kotlin&#xff0c;kotlin不会也没事&#xff0c;我也不会。 参考项目&#xff1a;https://github.com/TBoyLi/flutte…

【更换yarn的位置】解决yarn和nodejs不在同一盘下产生的某些命令应用失败问题

具体问题我记得是command fail什么error&#xff0c;记不太清楚了&#xff0c;文章主要写了如何替换yarn路径&#xff0c;希望可以帮助到大家。

【YOLO系列算法人员摔倒检测】

YOLO系列算法人员摔倒检测 模型和数据集下载YOLO系列算法的人员摔倒检测数据集可视化数据集图像示例&#xff1a; 模型和数据集下载 yolo行人跌倒检测一&#xff1a; 1、训练好的行人跌倒检测权重以及PR曲线&#xff0c;loss曲线等等&#xff0c;map达90%多&#xff0c;在行人跌…

测试需求平台7-产品管理服务接口一篇搞定

✍此系列为整理分享已完结入门搭建《TPM提测平台》系列的迭代版&#xff0c;拥抱Vue3.0将前端框架替换成字节最新开源的arco.design&#xff0c;其中约60%重构和20%新增内容&#xff0c;定位为从 0-1手把手实现简单的测试平台开发教程&#xff0c;内容将囊括基础、扩展和实战&a…

VSCode中打开md文件的智能提示

VSCode中打开md文件的智能提示 vscode中md的只能提示是默认关闭的,要打开必须要做些设置. 搜了好多文章,都是坑! 明明没设置成功,参数类型不对还信誓旦旦的坑自己同胞! 也难怪国内人学的那么难,反而国外学的很简单! 找了以下外面的资料,还是隔壁的人认真,给出了以下方法,测试成…

《TCP/IP详解 卷一》第6章 DHCP

目录 6.1 引言 6.2 DHCP 6.2.1 地址池和租用 6.2.2 DHCP和BOOTP消息格式 6.2.3 DHCP和BOOTP选项 6.2.4 DHCP协议操作 6.2.5 DHCPv6 6.2.6 DCHP中继 6.2.7 DHCP认证 6.2.8 重新配置扩展 6.2.9 快速确认 6.2.10 位置信息&#xff08;LCI和LoST&#xff09; 6.2.11 移…

OpenCV 4基础篇| OpenCV像素的编辑

目录 1. 前言1. 像素的访问1.1 数组索引访问1.2 img.item() 2. 像素的修改2.1 数值索引修改2.2 img.itemset() 1. 前言 像素是构成数字图像的基本单位&#xff0c;像素处理是图像处理的基本操作。 对像素的访问、修改&#xff0c;可以使用 Numpy 方法直接访问数组元素。 1. 像…

备考2024年AMC10:2000-2023年1250道AMC10真题练一练

我整理了2000-2023年的全部AMC10的AB卷真题共1250题&#xff0c;并且独家制作了多种在线练习&#xff0c;利用碎片化时间&#xff0c;一年足以通过自学在2024年AMC10竞赛中取得好成绩。 我们今天继续来随机看五道题目和解析。 2000-2023年AMC10真题练一练&#xff1a;2013年第…

洛谷P8627 [蓝桥杯 2015 省 A] 饮料换购

#先看题目 题目描述 乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料&#xff0c;凭 3 个瓶盖可以再换一瓶 C 型饮料&#xff0c;并且可以一直循环下去(但不允许暂借或赊账)。 请你计算一下&#xff0c;如果小明不浪费瓶盖&#xff0c;尽量地参加活动&#xff0c;那…

Python入门学习——基础语法

一、Python解释器 1. Python解释器的作用是&#xff1a; 将Python代码翻译成计算机认识的O和1并提交计算机执行在解释器环境内可以一行行的执行我们输入的代码也可以使用解释器程序&#xff0c;去执行".py"代码文件 2. Python解释器程序在&#xff1a; <Python…

【第七天】C++模板探秘:函数模板、类模板以及类型转换的深入解析

一、模板的概述 c面向对象编程思想&#xff1a;封装、继承、多态 c泛型编程思想&#xff1a;模板 模板的分类&#xff1a;函数模板、类模板 函数模板&#xff08;类模板&#xff09;&#xff1a;将功能相同&#xff0c;类型不同的函数&#xff08;类&#xff09;的类型抽象成虚…

QoS 服务质量

服务质量 QoS (Quality of Service) 服务质量可用若干基本性能指标来描述&#xff0c;包括&#xff1a;可用性、差错率、响应时间、吞吐量、分组丢失率、连接建立时间、故障检测和改正时间等。 服务提供者可向其用户保证某一种等级的服务质量。 服务性能的总效果&#xff0c;…

svn客户端下载、安装、使用

下载、使用 打开360软件管家&#xff0c;选怎宝库&#xff0c;搜索svn&#xff0c;点击安装 可以修改安装路径 使用 在桌面右键弹出菜单&#xff0c;点击 输入地址&#xff0c;点击ok 输入用户名、密码 &#xff0c;等待检出完成