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

news2024/11/19 15:33:36

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)

    # 计算ATR
    df['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 pd

import 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)

    # 计算ATR
    df['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.coloradmin.cn/o/1466540.html

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

相关文章

RabbitMQ的死信队列和延迟队列

文章目录 死信队列如何配置死信队列死信队列的应用场景Spring Boot实现RabbitMQ的死信队列 延迟队列方案优劣:延迟队列的实现有两种方式: 死信队列 1)“死信”是RabbitMQ中的一种消息机制。 2)消息变成死信,可能是由于…

基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-Android算法方面运维方面测试方面招聘岗位薪资多维度精准预测招聘岗位分析推荐 结语…

《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 位置信息(LCI和LoST) 6.2.11 移…

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…

Vue2响应式原理分析(数据代理与数据劫持)

综述: 我们都知道,每个Vue的应用都是通过new一个Vue构造函数从而创造出来一个vm实例对象,el(elect)配置项为通过id选择器#root选择index页面中的根dom元素进行绑定,data配置项则为vue模板中用到的源数据。 …

python 层次分析(AHP)

文章目录 一、算法原理二、案例分析2.1 构建指标层判断矩阵2.2 求各指标权重2.2.1 算术平均法(和积法)2.2.2 几何平均法(方根法) 2.3 一致性检验2.3.1 求解最大特征根值2.3.2 求解CI、RI、CR值2.3.3 一致性判断 2.4 分别求解方案层…

算法沉淀——FloodFill 算法(leetcode真题剖析)

算法沉淀——FloodFill 算法 01.图像渲染02.岛屿数量03.岛屿的最大面积04.被围绕的区域05.太平洋大西洋水流问题06.扫雷游戏07.衣橱整理 Flood Fill(泛洪填充)算法是一种图像处理的基本算法,用于填充连通区域。该算法通常从一个种子点开始&am…

【DDD】学习笔记-薪资管理系统的测试驱动开发2

测试驱动开发的过程 满足简单设计并编写新的测试 当代码满足重用性和可读性之后,就应遵循简单设计的第四条原则“若无必要,勿增实体”,不要盲目地考虑为其增加新的软件元素。这时,需要暂时停止重构,编写新的测试。 …

2.23数据结构

单向循环链表 创建单向循环链表,创建节点 ,头插,按位置插入,输出,尾删,按位置删除功能 //main.c #include "loop_list.h" int main() {loop_p Hcreate_head();insert_head(H,12);insert_head(…

计算机网络-网络层,运输层,应用层

网络层/网际层 网络层的主要任务包括: 提供逻辑上的端到端通信:网络层负责确定数据的传输路径,使数据能够从源主机传输到目标主机,即实现端到端的通信。数据包的路由和转发:网络层根据目标主机的地址信息&#xff0c…

vue项目使用vue2-org-tree

实现方式 安装依赖 npm i vue2-org-tree使用的vue页面引入 <template><div class"container"><div class"oTree" ><vue2-org-tree name"test":data"data":horizontal"horizontal":collapsable"…

【服务器数据恢复】通过reed-solomon算法恢复raid6数据的案例

服务器数据恢复环境&#xff1a; 一台网站服务器中有一组由6块磁盘组建的RAID6磁盘阵列&#xff0c;操作系统层面运行MySQL数据库和存放一些其他类型文件。 服务器故障&#xff1a; 该服务器在工作过程中&#xff0c;raid6磁盘阵列中有两块磁盘先后离线&#xff0c;不知道是管理…

LabVIEW开发FPGA的高速并行视觉检测系统

LabVIEW开发FPGA的高速并行视觉检测系统 随着智能制造的发展&#xff0c;视觉检测在生产线中扮演着越来越重要的角色&#xff0c;尤其是在质量控制方面。传统的基于PLC的视觉检测系统受限于处理速度和准确性&#xff0c;难以满足当前生产需求的高速和高精度要求。为此&#xf…

【python】yolo目标检测模型转为onnx,及trt/engine模型的tensorrt轻量级模型部署

代码参考&#xff1a; Tianxiaomo/pytorch-YOLOv4: PyTorch ,ONNX and TensorRT implementation of YOLOv4 (github.com)https://github.com/Tianxiaomo/pytorch-YOLOv4这个大佬对于各种模型转化写的很全&#xff0c;然后我根据自己的需求修改了部分源码&#xff0c;稍微简化了…

【区块链】联盟链

区块链中的联盟链 写在最前面**FAQs** 联盟链&#xff1a;区块链技术的新兴力量**联盟链的定义****联盟链的技术架构**共识机制智能合约加密技术身份认证 **联盟链的特点**高效性安全性可控性隐私保护 **联盟链的应用场景****金融服务****供应链管理****身份验证****跨境支付**…

VSCODE include错误 找不到 stdio.h

解决办法&#xff1a; Ctrl Shift P 打开命令面板&#xff0c; 键入 “Select Intellisense Configuration”&#xff08;下图是因为我在写文章之前已经用过这个命令&#xff0c;所以这个历史记录出现在了第一行&#xff09; 再选择“Use gcc.exe ”&#xff08;后面的Foun…

网络原理-TCP/IP(7)

目录 网络层 路由选择 数据链路层 认识以太网 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 认识MTU ARP协议 ARP协议的作用 ARP协议工作流程 重要应用层协议DNS(Domain Name System) DNS背景 NAT技术 NAT IP转换过程 NAPT NAT技术的优缺点 网络层 路由…

如何将建筑白模叠加到三维地球上?

​ 通过以下方法可以将建筑白模叠加到三维地球上。 方法/步骤 下载三维地图浏览器 http://www.geosaas.com/download/map3dbrowser.exe&#xff0c;安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“ 3、点击“建筑白模”菜单&…

基于java(Springboot)学生信息管理和新生报到系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

康威生命游戏

康威生命游戏 康威生命游戏(Conway’s Game of Life)是康威发明的细胞自动机。 生命游戏有几个简单的规则&#xff1a; 细胞有两种状态&#xff0c;存活或死亡&#xff0c;每个细胞以自身为中心与周围的八格细胞互动。 对于存活的细胞&#xff1a; 当周围的细胞过少(<2)或…