当前位置: 首页 > news >正文

什么是ATR,在聚宽量化平台如何计算ATR

海龟们使用两种资金管理方法。首先,我们把头寸分成一个个小块。这样,即使一笔交易赔了钱,我们损失的也只是一个头寸的一部分。里奇和比尔把这些小块称作头寸单位。其次,我们使用里奇和比尔发明的一种创新性的头寸规模决定方法。这种方法以市场的每日上下波动为基础,而波动幅度是以不变美元价衡量的。他们会为每一个市场计算出一个特定的合约数量,目的是让所有市场的绝对波动幅度大致相等。里奇和比尔把他们的波动性指标称为N,尽管现在的人更习惯称它为真实波动幅度均值(average true range,ATR)。

在量化投资平台聚宽上面,可以用下面的代码来计算:

# 本文用于测算ATR,ATR是用于测算波动率的重要指标,其定义为:

# 1、昨日收盘价-当日最高价

# 2、昨日收盘价-当日最低价

# 3、当日最高价-当日最低价

# 三者的最大值

import pandas as pd

#显示所有列

pd.set_option('display.max_columns', None)

#显示所有行

pd.set_option('display.max_rows', None)

#设置value的显示长度为100,默认为50

pd.set_option('max_colwidth',100)

def get_ATR(stockname, begindate, enddate):

    # 获取行情数据

    df_stockdata = get_price(stockname, start_date=begindate, end_date=enddate, frequency='daily')

    df_stockdata = df_stockdata.reset_index()

    df_stockdata.rename(columns={'index':'stockdate'}, inplace=True)

#     print(df_stockdata)

    if type(df_stockdata) == int:

        print(stockname, '在这段时间内,没有数据!')

        return -1

    # 数据清理,首先要删掉空格行

    df_stockdata = df_stockdata.replace(0, np.nan)

    df_stockdata = df_stockdata.dropna()

    df_stockdata = df_stockdata.reset_index(drop=True)

    # 获取昨日收盘价

    df_yesterday_close = df_stockdata.loc[0:len(df_stockdata) - 2, 'close']

    df_yesterday_close.index = df_yesterday_close.index + 1

    df_yesterday_close.rename('yesterday_Close', inplace=True)  # 更新Series的名字,一定要加 inplace=True,否则改不过来

    # print(type(df_yesterday_close))

    df_stockdata = pd.concat([df_stockdata, df_yesterday_close], axis=1)

    df_stockdata = df_stockdata.dropna(axis=0)  # 删掉空值数据

    df_stockdata = df_stockdata.reset_index(drop=True)

    df_stockdata['ATR_3'] = (df_stockdata['high'] - df_stockdata['low'])  # 当日最高价-当日最低价

    df_stockdata['ATR_2'] = abs(df_stockdata['yesterday_Close'] - df_stockdata['low'])  # 昨日收盘价-当日最低价

    df_stockdata['ATR_1'] = abs(df_stockdata['yesterday_Close'] - df_stockdata['high'])  # 昨日收盘价-当日最低价

    # 重新构建一个临时DataFrame,用于取最大值

    df_temp_atr = df_stockdata[['ATR_3', 'ATR_2', 'ATR_1']]

    df_atr = df_temp_atr.max(axis=1)

    df_atr.rename('ATR', inplace=True)    # 重命名

    

    df_stockdata = pd.concat([df_stockdata, df_atr], axis=1)

    return df_stockdata

get_ATR('300144.XSHE', '2022-02-01', '2022-02-18')

http://www.lryc.cn/news/172262.html

相关文章:

  • Python 爬虫实战之爬淘宝商品并做数据分析
  • Python爬虫-requests.exceptions.SSLError: HTTPSConnectionPool疑难杂症解决(1)
  • 12:STM32---RTC实时时钟
  • 【动态规划刷题 16】最长等差数列 (有难度) 等差数列划分 II - 子序列
  • 【postgresql】替换 mysql 中的ifnull()
  • 单例模式(懒汉式,饿汉式,变体)
  • Java Lambda表达式:简洁且强大的函数式编程工具
  • 开源框架中的责任链模式实践
  • 智能配电系统:保障电力运行安全、可控与高效
  • MySQL学习系列(11)-每天学习10个知识
  • 如何通过Gunicorn和Niginx部署Django
  • C语言 cortex-A7核UART总线实验
  • asp.net C#免费反编译工具ILSpy
  • 演讲实录:DataFun 垂直开发者社区基于指标平台自主洞察北极星指标
  • ffmpeg编译 Error: operand type mismatch for `shr‘
  • 【Windows Server 2012 R2搭建FTP站点】
  • python教程:使用gevent实现高并发并限制最大并发数
  • 借助reCAPTCHA实现JavaScript验证码功能
  • 监控数据的采集方式及原理
  • Vue路由与node.js环境搭建
  • 腾讯云16核服务器性能测评_轻量和CVM配置大全
  • Postman应用——下载注册和登录
  • uni-app混合开发 navigateTo、reLaunch、redirectTo、switchTab区别
  • 专业软件测评中心:关于软件性能测试的实用建议
  • vue项目通过json-bigint在前端处理java雪花id过长导致失去精度问题
  • 【全志V3s】SPI NAND Flash 驱动开发
  • 【二叉树】二叉树展开为链表-力扣 114 题
  • NLP文本生成全解析:从传统方法到预训练完整介绍
  • OpenBA:开源模型家族再添一员!从头训练的15B中英非对称Encoder-Decoder结构双语模型...
  • 安防视频监控平台EasyNVR无法控制云台,该如何解决?