Python 实现 ATR 指标计算(真实波幅):股票技术分析的利器系列(10)

Python 实现 ATR 指标计算(真实波幅):股票技术分析的利器系列(10)

    • 介绍
      • 算法解释
    • 代码
      • rolling函数介绍
      • 核心代码
    • 完整代码


介绍

ATR(真实波幅)是一种技术指标,用于衡量市场波动性的程度

优点缺点
提供波动性度量,有助于风险管理和交易决策ATR本身不提供买卖信号,需要结合其他指标使用
简单易懂,计算方法清晰对于极端行情,ATR可能无法准确反映实际波动
可适用于不同市场和时间周期信号滞后,因为ATR是基于历史数据计算的
可以帮助设定止损和止盈水平
可以作为确定交易仓位大小的参考

先看看官方介绍:

ATR(真实波幅)
用法
今日振幅、今日最高与昨收差价、今日最低与昨收差价中的最大值,为真实波幅,求真实波幅的N日移动平均
参数:N为天数,一般取14

算法解释

MTR:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:MA(MTR,N);
  1. Mean True Range (MTR):

    MTR代表的是平均真实波幅,它是真实波幅(TR)的移动平均值。TR是用来度量单个交易周期内的价格波动性的指标,其计算方法是当日最高价和最低价之间的差值,当日最高价和前一个交易日的收盘价之间的差值,以及当日最低价和前一个交易日的收盘价之间的差值中的最大值。MTR通过对TR进行移动平均来平滑价格波动性的波动,因此提供了更稳定的参考。

  2. Average True Range (ATR):

    ATR也是用来衡量价格波动性的指标,但它直接计算了一段时间内的平均波幅。与MTR不同,ATR并没有对真实波幅进行平均化处理,而是直接计算了一定时期内的TR的平均值。ATR通常用于确定价格波动性的程度,例如,较大的ATR值表示市场波动较大,而较小的ATR值表示市场波动较小。

代码

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

核心代码

# 计算 ATR
def calculate_atr(df, n=14):# 计算真实范围(True Range)df['HL'] = df['HIGH'] - df['LOW']df['HC'] = abs(df['CLOSE'].shift(1) - df['HIGH'])df['LC'] = abs(df['CLOSE'].shift(1) - df['LOW'])df['MTR'] = df[['HL', 'HC', 'LC']].max(axis=1)# 计算ATRdf['ATR'] = df['MTR'].rolling(window=n).mean()return df.drop(['HL', 'HC', 'LC'], axis=1)

df['HL'] = df['HIGH'] - df['LOW']: 这一行计算了每个交易周期内的价格范围,即当日最高价和最低价之间的差值,结果保存在DataFrame的新列’HL’中。

df['HC'] = abs(df['CLOSE'].shift(1) - df['HIGH']): 这一行计算了当日最高价与前一个交易日收盘价之间的价差的绝对值,结果保存在DataFrame的新列’HC’中。shift(1)函数将CLOSE列向上偏移一个位置,以便与前一个交易日的CLOSE值进行计算。

df['LC'] = abs(df['CLOSE'].shift(1) - df['LOW']): 这一行计算了当日最低价与前一个交易日收盘价之间的价差的绝对值,结果保存在DataFrame的新列’LC’中。

df['MTR'] = df[['HL', 'HC', 'LC']].max(axis=1): 这一行计算了每个交易周期内的真实范围(Mean True Range)。它取了之前计算的’HL’、'HC’和’LC’列的最大值,结果保存在DataFrame的新列’MTR’中。max(axis=1)表示沿着每一行取最大值。

df['ATR'] = df['MTR'].rolling(window=n).mean(): 这一行计算了ATR(Average True Range)。它对MTR列进行滚动平均,使用了窗口大小为’n’的移动窗口。结果保存在DataFrame的新列’ATR’中。这里假设变量’n’已经在代码中定义并赋值。

完整代码

import pandas as pdimport a_get_data# 计算 ATR
def calculate_atr(df, n=14):# 计算真实范围(True Range)df['HL'] = df['HIGH'] - df['LOW']df['HC'] = abs(df['CLOSE'].shift(1) - df['HIGH'])df['LC'] = abs(df['CLOSE'].shift(1) - df['LOW'])df['MTR'] = df[['HL', 'HC', 'LC']].max(axis=1)# 计算ATRdf['ATR'] = df['MTR'].rolling(window=n).mean()return df.drop(['HL', 'HC', 'LC'], axis=1)data = {'CLOSE': 填每日收盘的数据,'HIGH': 填每日最高的数据,'LOW': 填每日最低的数据'OPEN': 填每日开盘的数据
}df = pd.DataFrame(data)# 计算ATR
df = calculate_atr(df)print(df)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux--ACL权限管理

一.ACL权限管理简介 ACL(Access Control List,访问控制列表)是一种文件权限管理机制,它提供了比传统的UGO(用户、组、其他)权限更灵活的权限设置方式。以下是ACL的一些主要功能: 针对特定用户或…

【Linux】docker构建环境编译运行linux内核

文章目录 1. 使用docker构建linux内核编译运行环境1.1. 为普通用户安装docker并验证是否安装成功1.1.1. 安装docker稳定版1.1.2. 启动docker1.1.3. 将当前用户加入docker用户组1.1.4. 验证docker是否安装成功 1.2. docker基本使用1.2.1. 列出所有镜像1.2.2. 查看当前所有容器的…

pyqt如何实现拖拽打开文件(通过windows的快捷方式打开文件)

桌面端的开发中如何通过windows的快捷方式打开文件,那么如何将需要打开的数据传递给qt程序呢? 研究了一下发现很简单 通过sys.argv可以轻松的实现传参 sys.argv import sys print(sys.argv)这个方法可以获取系统传递给程序的参数,默认是个列…

企业型多域名SSL证书

多域名SSL证书是目前市场上用的比较多的一种,主要解决多个不同规则的域名申请,但不适合主域名(根域名)相同的域名,因为这种域名直接申请通配符。 企业型其实就是OV类型或者EV类型,由于在CA/B产品名称规范中…

pi(2)

上一次我们说到了这个程序 #include <iostream> #include <cmath> #include <limits> int continuedFractionTerm(int n) { if (n 0) return 1; if (n % 2 0) { return 2 * n 1; } else { return 2 * n; } } std::pair<int, int> be…

jetson nano——安装archiconda

目录 1.archiconda3我在这提供了下载链接&#xff0c;点解下面链接即可1.看好文件所在位置&#xff0c;如果装错了&#xff0c;那么环境变量的路径自己进行相应的修改。2.添加环境变量 2.可能部分伙伴输入一些激活&#xff0c;啥的命令激活不了&#xff0c;那么输入下面这些代码…

深入浅出JVM(八)之类加载器

前文已经描述Java源文件经过前端编译器后变成字节码文件&#xff0c;字节码文件通过类加载器的类加载机制在Java虚拟机中生成Class对象 前文深入浅出JVM&#xff08;六&#xff09;之前端编译过程与语法糖原理重点描述过编译的过程 前文深入浅出JVM&#xff08;三&#xff09…

视频基础学习二——图像深度与格式(RGB与YUV)

文章目录 前言一、图像深度1.什么是图像深度2.图像深度的意义3.常见的图像深度8位16位24位32位 二、图像格式1.RGB格式2.RGB样式2.YUVYUV的来由YUV样式RGB和YUV之间的转换YUV的常见类型 总结 前言 本文的目的是为了梳理音视频基础相关的知识&#xff0c;有很多做流媒体、音视频…

高级语言期末2010级A卷

1.编写函数&#xff0c;按照如下公式计算圆周率π的值&#xff08;精确到1e-5&#xff09; #include <stdio.h>double pai() {double last0;double flag1;int n1;while(flag-last>1e-5) {lastflag;flag*1.0*(2*n)*(2*n)/((2*n-1)*(2*n1));n;}return 2*last; }int main…

基于SpringBoot的停车场管理系统

基于SpringBootVue的停车场管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台首页 停车位 个人中心 管理员界面 摘要 摘要&#xff1a;随着城市化进程的…

C#,计算几何,计算机图形学(Computer Graphics)洪水填充算法(Flood Fill Algorithm)与源代码

1 泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法(Flood Fill Algorithm) &#xff0c;又称洪水填充算法&#xff0c;是在很多图形绘制软件中常用的填充算法&#xff0c;最熟悉不过就是 windows 自带画图软件的油漆桶功能。 2 源程序 using System; using System.Collecti…

windows 虚拟机:CrossOver 24.0.0 for Mac破解版安装激活2024图文教程

CrossOver 24.0.0 for Mac是一款功能强大的虚拟机软件&#xff0c;允许在Mac系统上运行Windows应用程序而无需重新启动计算机。通过CrossOver&#xff0c;用户可以轻松地运行Windows软件和游戏&#xff0c;而无需购买Windows许可证或使用虚拟机。 CrossOver 24.0.0 for Mac通过…

MySQL-基本使用,数据类型,简单操作

1. 数据库概述 1.1 数据库(DatBase) 数据库&#xff0c;就是遵循一定数据格式的数据集合&#xff0c;可以认为他是对文件系统的改进。它解决了不同操作系统之间&#xff0c;数据格式的兼容性问题。也就是说&#xff0c;只要是同一个数据库的数据文件&#xff0c;即使从windows迁…

使用 kind 集群安装运行极狐GitLab Runner【下】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 上一篇内容中&#xff0c;我们已经利用 kind 创建好了一个本地…

GPT-SoVITS 快速声音克隆使用案例:webui、api接口

参考: https://github.com/RVC-Boss/GPT-SoVITS 环境: Python 3.10 PyTorch 2.1.2, CUDA 12.0 安装包: 1、使用: 1)下载项目 git clone https://github.com/RVC-Boss/GPT-SoVITS.git2)下载预训练模型 https://huggingface.co/lj1995/GPT-SoVITS 下载模型文件放到GPT…

C# (WebApi)整合 Swagger

SpringBoot-整合Swagger_jboot整合swagger-CSDN博客 C# webapi 也可以整合Swagger webapi运行其实有个自带的HELP页面 但是如果觉得UI不好看&#xff0c;且没办法显示方法注释等不方便的操作&#xff0c;我们也可以整合Swagger 一、使用NuGet控制台安装Swagger 在菜单中选择…

Pycharm服务器配置与内网穿透工具结合实现远程开发的解决方法

文章目录 一、前期准备1. 检查IDE版本是否支持2. 服务器需要开通SSH服务 二、Pycharm本地链接服务器测试1. 配置服务器python解释器 三、使用内网穿透实现异地链接服务器开发1. 服务器安装Cpolar2. 创建远程连接公网地址 四、使用固定TCP地址远程开发 本文主要介绍如何使用Pych…

力扣随笔之颜色分类(中等75)

思路&#xff1a;定义两个指针划分left&#xff0c;right划分三个区域left左边是红色区域&#xff0c;right右边是蓝色区域&#xff0c;left和right之间是白色区域&#xff1b;定义一个遍历指针遍历整个数组&#xff0c;遇到红色与left所指位置数字交换&#xff0c;并将left自加…

2023最新简绘AI开源版支持MJ绘画,AI问答

应用介绍 本文来自&#xff1a;2023最新简绘AI开源版支持MJ绘画&#xff0c;AI问答 - 源码1688 简介&#xff1a; 简绘AI开源版&#xff0c;从闲鱼上买的&#xff0c;搭建教程如下 测试环境&#xff1a;NginxPHP7.4MySQL5.6 图片&#xff1a;

STM32F4XX - CAN设置

can协议部分 - 逻辑信号和电平信号 先贴上CAN信号在物理信号线上的查分信号表示形式 显性电平&#xff1a; 电压差范围为1.5-2.5v。 对应的逻辑电平是0 隐性电平&#xff1a; 其他 对应的逻辑电平是1 为什么显性电平对应的逻辑电平值为0&#xff0c;而隐性电平对应的逻辑电平…