Python 实现 RSI 指标计算:股票技术分析的利器系列(4)

news2024/11/27 6:23:11

Python 实现 RSI 指标计算:股票技术分析的利器系列(4)

    • 介绍
      • 算法解释
    • 代码
      • rolling函数介绍
      • 计算LC
      • shift函数
        • 语法:
        • 参数:
        • 返回值:
      • 计算涨跌幅
      • 函数MAX介绍
        • 语法:
        • 参数:
        • 返回值:
        • 示例:
      • abs函数介绍
        • 语法:
        • 参数:
        • 返回值:
        • 示例:
      • 计算移动平均
      • 计算RSI
      • 计算单个的RSI代码
      • 计算3个RSI ,完整代码


介绍

先看看官方介绍:

RSI (相对强弱指标)
用法
1.RSI>80 为超买,RSI<20 为超卖;
2.RSI 以50为中界线,大于50视为多头行情,小于50视为空头行情;
3.RSI 在80以上形成M头或头肩顶形态时,视为向下反转信号;
4.RSI 在20以下形成W底或头肩底形态时,视为向上反转信号;
5.RSI 向上突破其高点连线时,买进;RSI 向下跌破其低点连线时,卖出。

算法解释

LC:=REF(CLOSE,1);
RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
RSI2:SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;
RSI3:SMA(MAX(CLOSE-LC,0),N3,1)/SMA(ABS(CLOSE-LC),N3,1)*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

计算LC

# 计算LC
df['LC'] = df['CLOSE'].shift(1)

shift函数

shift() 是 Pandas 中的一个函数,用于将 DataFrame 或 Series 中的数据沿着指定轴向上或向下移动指定数量的位置。这可以用来创建滞后值或领先值,也就是将数据向前或向后移动一定的步数。

语法:
DataFrame.shift(periods=1, freq=None, axis=0, fill_value=None)
参数:
  • periods:要移动的位置数目,可以是正数(向下移动)或负数(向上移动)。默认值为 1。
  • freq:可选,用于时序数据。在时间序列数据中,可以通过设置 freq 参数来指定时间频率,例如 “D” 表示日历日,“M” 表示月份,等等。
  • axis:指定沿着哪个轴进行移动,0 表示行索引,1 表示列索引。默认值为 0。
  • fill_value:可选,用于填充缺失值的替代值。
返回值:

返回一个移动后的新的 DataFrame 或 Series。

计算涨跌幅

# 计算涨跌幅
df['up_move'] = df['CLOSE'] - df['LC']
df['up'] = df['up_move'].apply(lambda x: max(x, 0))
df['down'] = df['up_move'].apply(lambda x: abs(x))

函数MAX介绍

max() 是 Python 内置函数之一,用于返回给定参数的最大值。

语法:
max(arg1, arg2, *args[, key])
参数:
  • arg1, arg2, …:要比较的对象,可以是数字、字符串、列表、元组等可比较的数据类型。
  • *args(可选):用于传递多个参数,可以是任意数量的参数。
  • key(可选):用于指定比较的函数。
返回值:

返回给定参数的最大值。

示例:
print(max(5, 10, 3, 8))  # 输出:10
print(max([3, 8, 2, 10]))  # 输出:10
print(max("apple", "banana", "orange"))  # 输出:"orange"

在示例中,max() 函数分别返回了传递给它的数字、列表和字符串中的最大值。

abs函数介绍

abs() 是 Python 内置函数之一,用于返回给定参数的绝对值。

语法:
abs(x)
参数:
  • x:要求取绝对值的数字或者可转换为数字的对象。
返回值:

返回参数的绝对值。

示例:
print(abs(-5))  # 输出:5
print(abs(3.14))  # 输出:3.14
print(abs(-10.5))  # 输出:10.5

在示例中,abs() 函数分别返回了 -53.14-10.5 的绝对值。

计算移动平均

# 计算移动平均
df['avg_gain'] = df['up'].rolling(window=N).mean()
df['avg_loss'] = df['down'].rolling(window=N).mean()

计算RSI

# 计算RSI
df['RSI'] = df['avg_gain'] / df['avg_loss'] * 100

计算单个的RSI代码

需要数据可以看附件资源 RSI-单个

import pandas as pd

data = {
    'CLOSE': 填每日收盘的数据,
}

df = pd.DataFrame(data)


# LC:=REF(CLOSE,1);
# RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
def RSI(N):
    # 计算LC
    df['LC'] = df['CLOSE'].shift(1)

    # 计算涨跌幅
    df['up_move'] = df['CLOSE'] - df['LC']
    df['up'] = df['up_move'].apply(lambda x: max(x, 0))
    df['down'] = df['up_move'].apply(lambda x: abs(x))

    # 计算移动平均
    df['avg_gain'] = df['up'].rolling(window=N).mean()
    df['avg_loss'] = df['down'].rolling(window=N).mean()

    # 计算RSI
    df['RSI'] = df['avg_gain'] / df['avg_loss'] * 100

    # 清理中间结果
    df.drop(['up_move', 'up', 'down', 'avg_gain', 'avg_loss'], axis=1, inplace=True)
    return df


N1 = 6

print(RSI(N1))


在这里插入图片描述

计算3个RSI ,完整代码

默认情况下,RSI 通常包括 RSI6RSI12RSI24,它们分别代表了不同的 RSI 计算窗口大小,即 6 天、12 天和 24 天。

需要数据可以看附件资源 RSI

import pandas as pd

data = {
    'CLOSE': 填每日收盘的数据,
}

df = pd.DataFrame(data)


# LC:=REF(CLOSE,1);
# RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
def RSI(N):
    # 计算LC
    df['LC'] = df['CLOSE'].shift(1)

    # 计算涨跌幅
    df['up_move'] = df['CLOSE'] - df['LC']
    df['up'] = df['up_move'].apply(lambda x: max(x, 0))
    df['down'] = df['up_move'].apply(lambda x: abs(x))

    # 计算移动平均
    df['avg_gain'] = df['up'].rolling(window=N).mean()
    df['avg_loss'] = df['down'].rolling(window=N).mean()

    # 计算RSI
    rsi_name = 'RSI' + str(N)
    df[rsi_name] = df['avg_gain'] / df['avg_loss'] * 100

    # 清理中间结果
    df.drop(['up_move', 'up', 'down', 'avg_gain', 'avg_loss'], axis=1, inplace=True)
    return df


N1 = 6
N2 = 12
N3 = 24

rsi_6 = RSI(N1)
rsi_6_12 = RSI(N2)
rsi_6_12_24 = RSI(N3)
print(rsi_6_12_24)

在这里插入图片描述

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

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

相关文章

小米4A路由器如何刷OpenWRT并结合内网穿透实现公网远程访问

文章目录 推荐前言1. 安装Python和需要的库2. 使用 OpenWRTInvasion 破解路由器3. 备份当前分区并刷入新的Breed4. 安装cpolar内网穿透4.1 注册账号4.2 下载cpolar客户端4.3 登录cpolar web ui管理界面4.4 创建公网地址 5. 固定公网地址访问 推荐 前些天发现了一个巨牛的人工智…

USB-C音频转接器:实现边充电边听歌的新选择 | LDR6020P

随着科技浪潮的推进&#xff0c;Type-C接口已逐渐成为电子设备的主流选择&#xff0c;以其正反随意插、高速传输和强大功能等独特优势&#xff0c;在日常生活中占据越来越重要的地位。而Type-C音频转接器&#xff0c;作为连接Type-C接口与音频设备的桥梁&#xff0c;正引领着音…

Springboot集成activiti,低代码整合平台,智慧审批,前端vue

一、项目形式 springbootvueactiviti集成了activiti在线编辑器&#xff0c;快速开发平台&#xff0c;可插拔工作流服务。 二、项目介绍 本项目拥有用户管理&#xff0c;部门管理&#xff0c;代码生成&#xff0c;系统监管&#xff0c;报表&#xff0c;大屏展示&#xff0c;业…

什么样的服务器是高性能服务器?

首先&#xff0c;高性能服务器应具备高处理能力。随着业务的不断扩展和数据量的爆炸性增长&#xff0c;高性能服务器需要具备强大的计算能力&#xff0c;能够快速处理各种复杂的业务和数据。这要求高性能服务器采用先进的处理器技术&#xff0c;如多核处理器、GPU加速等&#x…

Java 学习和实践笔记(14)

OOP :面向对象编程&#xff0c;object oriented programming. 用表格就可以很好地理解类、对象、属性、以及动作这些概念。 一个表&#xff08;结构&#xff09;就对应一个类&#xff08;结构&#xff09;。所以凡叫什么类&#xff0c;自己就在心里把它叫什么表。反过来&…

Linux——信号(1)

在我们使用Linux系统的时候我们经常会使用ctrl c的方式来终止进程&#xff0c;也 会使用kill命令来杀掉进程&#xff0c;评判进程退出的健康程度中也有信号的身影。那 么Linux中的信号到底是什么&#xff1f;今天就由我来介绍Linux中的信号。1. 信号的概念 要了解计算机中的信…

电比油低,比亚迪出“王炸”,7.98万起 插混双雄荣耀出击

2月19日&#xff0c;比亚迪出“王炸”--秦PLUS、驱逐舰05荣耀版上市&#xff0c;官方指导价7.98万元起&#xff0c;正式开启电动车价格比同级别燃油车更低的时代&#xff0c;加速油转电的变革。 电比油好 油转电再提速 官方起售价7.98万的秦PLUS荣耀版、驱逐舰05荣耀版价好质更…

BUGKU-WEB 留言板1

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; 解题思路 之间写过一题类似的&#xff0c;所以这题应该是有什么不同的那就按照之前的思路进行测试试试提示说&#xff1a;需要xss平台接收flag&#xff0c;这个和之前说的提示一样 相关工具 xss平台&#xf…

结合memo简述useCallback的使用场景

先看一下官方对于useCallback的定义&#xff1a; useCallback是一个允许你在多次渲染中缓存函数的React Hook 这句话包含了俩个因素&#xff1a; useCallback的作用&#xff1a;缓存函数useCallback的使用场景&#xff1a;多次渲染下 什么叫多次渲染呢&#xff1f;组件嵌套的时…

MySQL命令行输入密码后闪退解决方案

使用MySQL8.0的Command&#xff0c;输入密码后闪退&#xff0c;但是如果不输入密码直接回车&#xff0c;却能直接进入MySQL环境&#xff1b;另外&#xff0c;在IDEA中也无法通过密码连接到root。在网上有如下常见的解决方案&#xff1a;(1)移动my.ini、(2)启动MySQL服务等。但是…

物联网实训室解决方案2024

一、概述 随着5G技术的广泛应用和产业经济的革新升级&#xff0c;物联网产业展现了无比广阔的未来发展潜力&#xff0c;因此对具备创新型技术技能人才的需求也日益迫切。本方案以物联网技术的最新发展为基础&#xff0c;紧密结合当前高职院校物联网实训室建设的实际情况&#…

【读点论文】Open-Set Text Recognition via Character-Context Decoupling

Open-Set Text Recognition via Character-Context Decoupling Abstract 开放集文本识别任务是一个新兴的挑战&#xff0c;在评估过程中需要额外的识别新字符的能力。我们认为&#xff0c;当前方法性能有限的一个主要原因是上下文信息对单个字符视觉信息的混淆效应。在开放集…

有趣的CSS - 新拟态输入框

我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;《有趣的css》系列已更新 11 篇了&#xff0c;今天这篇是关于新拟态风格的一个输入框效果&#xff0c;希望你们喜欢。 目录 页面效果核心代码html代码css代码 完整代码html页面css样式 页面效果 此效果使用 css 中 b…

standalone安装部署

standalone是spark的资源调度服务&#xff1b;作用和yarn是一样的&#xff1b;standlone运行时的服务&#xff1a; master服务&#xff1b;主服务&#xff1b;管理整个资源调度&#xff1b;资源的申请需要通过master进行分配&#xff1b;类似于yarn里的ResourceManager;&#x…

【ARMv8M Cortex-M33 系列 8 -- RT-Thread 堆内存 检查命令 free 实现及介绍】

文章目录 RT-Thread 堆内存 检查命令 free 实现及介绍rt_memory_info 函数验证 RT-Thread 堆内存 检查命令 free 实现及介绍 在RT-Thread系统中&#xff0c;通常可以通过rt_memory_info函数获取当前的堆内存使用信息&#xff0c;然后你可以包装这个函数来显示剩余的堆空间。rt…

【C++】中类的6个默认成员函数 取地址及const成员函数 学习运算符重载 【实现一个日期类】

文章目录 一、【C】赋值运算符重载1.1 运算符重载【引入】1.2 运算符重载1.3 赋值运算符重载1.4 赋值 二、日期类的实现2.1 判断小于2.2 判断等于2.3 判断小于等于2.4 判断大于2.5 判断大于等于2.6 判断不等于2.7 日期加等天数2.8 获取月份天数2.9 日期加天数2.9.1 日期减等天数…

UE蓝图 Cast节点和源码

系列文章目录 UE蓝图 Cast节点和源码 文章目录 系列文章目录Cast节点功能一、Cast节点用法二、Cast节点使用场景三、Cast节点实现步骤四、Cast节点源码 Cast节点功能 在Unreal Engine&#xff08;UE&#xff09;中&#xff0c;Cast节点是一种蓝图系统中的节点&#xff0c;用于…

重磅!2024年中科院预警期刊名单发布,24本上榜!预警原因公开

2024年中科院预警期刊名单 2月19日&#xff0c;2024年中科院预警期刊名单正式发布&#xff01; 名单分析&#xff1a; 2024年版本的《国际期刊预警名单&#xff08;试行&#xff09;》共24本期刊&#xff0c;较2023年版本的28本减少了4本&#xff0c;今年的24本期刊中&#…

AI专题:AI浪潮,海外日新月异,国内奋力追赶

今天分享的是AI系列深度研究报告&#xff1a;《AI专题&#xff1a;AI浪潮&#xff0c;海外日新月异&#xff0c;国内奋力追赶》。 &#xff08;报告出品方&#xff1a;方正证券&#xff09; 报告共计&#xff1a;24页 来源&#xff1a;人工智能学派 智算三方面奠基生产力革…

推荐12个超级哇塞的工具

今天分享 12 个完全免费的软件工具&#xff0c;包括 5 个电脑软件和 7 个在线工具&#xff0c;每一个都是自己用心挑选&#xff0c;每一个都是良心免费&#xff0c;让你惊艳。 1 WinFR界面版 WinFR界面版是一款基于微软官方命令行工具 Windows File Recovery 的图形界面工具…