Python 交易指南:利用 RSI

一、说明

        RSI是相对强弱指数(Relative Strength Index)的缩写,是一种技术指标。该指标是用来测量股票或其他交易品种的价格波动强度和速度的,属于动量型指标。RSI常用于技术分析和交易策略中,可以帮助交易者判断市场的买卖力量、价格趋势和超买超卖状况,从而制定有效的交易决策。

二、RSI 概念和特征

        相对强弱指数(RSI)是衡量价格变动速度和变化的动量振荡器。它可以帮助交易者识别市场中的超买或超卖情况,表明潜在的价格反转。

        动量是指价格在特定方向上变动的强度和速度。它基于以下原则:向某个方向移动的资产倾向于继续向该方向移动,直到发生重大变化。

        动量振荡器是用于衡量价格变动动量和识别潜在趋势反转的技术指标。它们为交易者提供有关价格变化的速度和幅度的信息,表明资产是超买还是超卖。

        动量振荡器通常在定义的上限和下限或阈值之间波动。这些阈值用于确定超买和超卖水平。当振荡器达到上限时,表明该资产可能超买,需要进行价格修正或反转。相反,当振荡器达到下边界时,它表明资产可能超卖,并且由于潜在的价格上涨或逆转。

        RSI 是根据指定时间段(通常为 14 个周期)的平均收益和损失计算的。

RSI 通常用作确定特定资产是超买还是超卖的信号。如果 RSI 值超过 70,则表明该资产超买,表明潜在的卖出信号。相反,如果 RSI 值跌破 30,则表明该资产超卖,表明存在潜在的买入信号。

三、让我们在 Python 中实现 RSI 

        首先,让我们使用库在一小时内提取过去两年的特斯拉股价。yfinance

import yfinance as yf
from datetime import datetime, timedeltaticker = "TSLA"end_date = datetime.today().strftime('%Y-%m-%d')
start_date = (datetime.today() - timedelta(days=700)).strftime('%Y-%m-%d')data = yf.download(ticker, start=start_date, end=end_date, interval='1h')

data is a Pandas DataFrame.

data.head()

        我们可以使用该库来绘制烛台图。它提供了一个方便的界面,用于在 Python mplfinance 中创建财务图表

import mplfinance as mpfmpf.plot(data, type='candle', volume=True, style='yahoo')
特斯拉股价烛台图。图片由作者提供。

        要使用提取的特斯拉股价计算 RSI(相对强弱指数),我们可以利用该库,该库提供各种技术分析指标。您可以在此处阅读库的文档。ta

pip install ta

import tadata['RSI'] = ta.momentum.RSIIndicator(data['Close']).rsi()
import matplotlib.pyplot as pltupper_limit = 70
lower_limit = 30plt.figure(figsize=(10, 6))
plt.plot(data.index, data['RSI'])
plt.axhline(y=upper_limit, color='r', linestyle='--', label='Overbought (70)')
plt.axhline(y=lower_limit, color='g', linestyle='--', label='Oversold (30)')
plt.title('RSI of Tesla Stock')
plt.xlabel('Date')
plt.ylabel('RSI')
plt.legend()
plt.grid(True)
plt.show()
特斯拉股票图表的RSI。图片由作者提供。

class close: pandas.core.series.Series, window: int = 14, fillna: bool = Falseta.momentum.RSIIndicator)

四、基于RSI的模拟

        让我们继续开发一个简单的买卖模拟,其中决策过程基于 RSI 指标的水平。

# Define the initial capital and track the current capital
initial_capital = 100
current_capital = initial_capital# Define the overbought and oversold limits
overbought_limit = 70
oversold_limit = 30# Define the initial holding status
is_holding = False# Iterate through the RSI data and make buy/sell decisions
for i in range(1, len(data)):current_rsi = data['RSI'][i]current_price = data['Close'][i]if current_rsi < oversold_limit and not is_holding:# Buy conditionshares_to_buy = current_capital / current_pricecurrent_capital = 0is_holding = Trueprint(f"Buy {shares_to_buy} shares at {current_price} -> Rsi Level: {current_rsi}")elif current_rsi > overbought_limit and is_holding:# Sell conditioncurrent_capital = current_capital + (current_price * shares_to_buy)is_holding = Falseprint(f"Sell {shares_to_buy} shares at {current_price} -> Rsi Level: {current_rsi}")# Print the final capital
print(f"Final capital: ${current_capital}")"""
Buy 0.4179246675736921 shares at 239.27757263183594 -> Rsi Level: 20.438411371337622
Sell 0.4179246675736921 shares at 255.51002502441406 -> Rsi Level: 73.06501350257133
Buy 0.29318660443911904 shares at 364.2183532714844 -> Rsi Level: 21.068814167529595
Sell 0.29318660443911904 shares at 379.25 -> Rsi Level: 73.41888447060789
Buy 0.32491093254899217 shares at 342.2200012207031 -> Rsi Level: 28.858062677990233
Sell 0.32491093254899217 shares at 336.93499755859375 -> Rsi Level: 75.20791184591683
Buy 0.31522318975955993 shares at 347.2900085449219 -> Rsi Level: 29.746993287658356
Sell 0.31522318975955993 shares at 289.4800109863281 -> Rsi Level: 71.37862844420539
Buy 0.35377445208463354 shares at 257.93499755859375 -> Rsi Level: 29.772071247456054
Sell 0.35377445208463354 shares at 290.6433410644531 -> Rsi Level: 70.21919190004444
Buy 0.29858345212367027 shares at 344.3666687011719 -> Rsi Level: 29.536900207208518
Sell 0.29858345212367027 shares at 249.22999572753906 -> Rsi Level: 71.8881356308825
Buy 0.3437808677391333 shares at 216.4633331298828 -> Rsi Level: 26.68961190834922
Sell 0.3437808677391333 shares at 241.20948791503906 -> Rsi Level: 70.19284733253295
Buy 0.3673613408605083 shares at 225.72654724121094 -> Rsi Level: 27.518762067733604
Sell 0.3673613408605083 shares at 243.37489318847656 -> Rsi Level: 70.28410255957843
Buy 0.3106414061007942 shares at 287.8126525878906 -> Rsi Level: 27.98065596331672
Sell 0.3106414061007942 shares at 296.7300109863281 -> Rsi Level: 75.46276500115341
Buy 0.3146013733382365 shares at 292.9949951171875 -> Rsi Level: 28.658808113058043
Sell 0.3146013733382365 shares at 194.70750427246094 -> Rsi Level: 71.7396674122882
Buy 0.35403564172219 shares at 173.02000427246094 -> Rsi Level: 29.771767028843456
Sell 0.35403564172219 shares at 129.5399932861328 -> Rsi Level: 70.25768896760097
Buy 0.24320177857052705 shares at 188.5749969482422 -> Rsi Level: 28.61856076775159
Sell 0.24320177857052705 shares at 193.75999450683594 -> Rsi Level: 71.66246679110026
Buy 0.26485879610225227 shares at 177.91659545898438 -> Rsi Level: 24.541752420541684
Sell 0.26485879610225227 shares at 170.13180541992188 -> Rsi Level: 70.36655102514713
Final capital: $45.06090516222314
"""

        我们从100美元的初始资本开始,经历了65美元的损失。

        交易者经常使用 RSI 作为识别市场潜在进入和退出点的工具。重要的是要注意,RSI应与其他技术分析工具和风险管理策略结合使用,以做出明智的交易决策。

用公式解释相对强弱指数 (RSI) 指标 (investopedia.com)

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

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

相关文章

C语言:三子棋小游戏

简介&#xff1a; 目标很简单&#xff1a;实现一个 三子棋小游戏。三子棋大家都玩过&#xff0c;规则就不提及了。本博文中实现的三子棋在对局中&#xff0c;电脑落子是随机的&#xff0c;不具有智能性&#xff0c;玩家的落子位置使用键盘输入坐标。下面开始详细介绍如何实现一…

QT实战之翻金币游戏【未完待续】

文章目录 目录 文章目录 前言 二、创建项目 三、添加资源 四、主界面实现 1、设置游戏主场景配置 2、设置背景图片 3、创建开始按钮 总结 前言 对QT的相关知识与控件进行简单的学习之后&#xff0c;通过实现“翻金币游戏”来巩固与实践所学的QT知识。在制作过程中是根据以下视…

PHP8数组的类型-PHP8知识详解

php 8 引入了对数组的类型提示&#xff0c;以帮助开发者更准确地定义和验证数组的结构。以下是 PHP 8 中支持的数组类型&#xff1a;索引数组、关联数组、混合类型数组。 1、索引数组 (Indexed arrays): PHP索引数组一般表示数组元素在数组中的位置&#xff0c;它由数字组成&a…

飞行动力学 - 第18节-part2-航向操纵面 之 基础点摘要

飞行动力学 - 第18节-part2-航向操纵面 之 基础点摘要 1. 航向操纵面2. 非常规航向操纵面3. 正方向舵偏角产生的偏航力矩4. 产生或平衡侧滑角 β \beta β所需的方向舵偏角5. 参考资料 1. 航向操纵面 方向舵是航向的主要操纵面。 2. 非常规航向操纵面 开裂式阻力方向舵 ( Spl…

el-table操作列动态自适应设置(根据操作项个数动态设置宽度)

一、目的 目的&#xff1a;表格操作列宽度&#xff0c;根据操作项多少&#xff0c;自动调节宽度背景&#xff1a;用el-table组件开发时&#xff0c;对于表格的操作列的自适应宽度是一个问题&#xff0c;如果不设置&#xff0c;操作按钮多时会有换行问题。如果设置最小宽度或宽…

跟踪源码技巧+阅读源码工具Sourcetrail

基于Eclipse IDE 1、Quick Type Hierarchy 快速查看类继承体系 &#xff08; 快捷键&#xff1a;Ctrl T&#xff09; 查看类很多人可能都知道&#xff0c;可源码阅读的时候更多用来查看方法体系更重要&#xff0c;可以方便快速的定位到方法的实现类。如&#xff1a; 此时如…

使用docker搭建owncloud Harbor 构建镜像

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 2、安装搭建私有仓库 Harbor 3、编写Dockerfile制作Web应用系统nginx镜像&#xff0c;生成镜像nginx:v1.1&#xff0c;并推送其到私有仓库。具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos基础…

SpringSecurity学习

1.认证 密码校验用户 密码加密存储 Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter {Beanpublic PasswordEncoder passwordEncoder(){return new BCryptPasswordEncoder();}} 我们没有以上代码配置&#xff0c;默认明文存储, {id}password…

解决eNSP和HCL Cloud兼容性的问题

问题&#xff1a;eNSP或HCL无法启动 不兼容的原因&#xff1a;eNSP支持Virtual Box是5.2.44&#xff1b;HCL支持的Virtual Box版本是6.0.14 解决方案&#xff1a;注册表欺骗 再进行重新安装前先把之前的都卸载掉&#xff1a;eNSP、VirtualBox、HCL等 1、先安装Virtual Box 5.…

23个react常见问题

1、setState 是异步还是同步&#xff1f; 合成事件中是异步 钩子函数中的是异步 原生事件中是同步 setTimeout中是同步 相关链接&#xff1a;你真的理解setState吗&#xff1f;&#xff1a; 2、聊聊 react16.4 的生命周期 图片 相关连接&#xff1a;React 生命周期 我对 Reac…

【数据结构】栈---C语言版(详解!!!)

文章目录 &#x1f438;一、栈的概念及结构&#x1f344;1、栈的概念定义&#x1f344;2、动图演示&#x1f332;入栈&#x1f332;出栈&#x1f332;整体过程 &#x1f438;二、栈的实现&#x1f438;三、数组结构栈详解&#x1f34e;创建栈的结构⭕接口1&#xff1a;定义结构…

【uniapp/uview】u-datetime-picker 选择器的过滤器用法

引入&#xff1a;要求日期选择的下拉框在分钟显示时&#xff0c;只显示 0 和 30 分钟&#xff1b; <u-datetime-picker :show"dateShow" :filter"timeFilter" confirm"selDateConfirm" cancel"dateCancel" v-model"value1&qu…

yolov5运行过程遇到的小问题(随时更新)

1.关于git的问题 解决办法&#xff1a;插入下面代码 import os os.environ["GIT_PYTHON_REFRESH"] "quiet"2.页面太小无法完成操作 解决办法: 如果不好使再考虑降低Batch_Size大小或者调整虚拟内存可用硬盘空间大小&#xff01;&#xff08;调整虚拟内存…

实现无公网IP的公网环境下Windows远程桌面Ubuntu 18.04连接,高效远程办公!

文章目录 一、 同个局域网内远程桌面Ubuntu1. 更新软件仓库2. 安装支持包3. 安装XFCE4桌面环境4. 安装XRDP5. 环境设置5.1 XFCE桌面配置5.2 在配置文件中&#xff0c;加入XFCE会话 6 重启服务7. 查看IP地址8. 使用Windows远程桌面连接 二、公网环境系统远程桌面Ubuntu1. 注册cp…

【Java】Jxls--轻松生成 Excel

1、介绍 Jxls 是一个小型 Java 库&#xff0c;可以轻松生成 Excel 报告。Jxls 在 Excel 模板中使用特殊标记来定义输出格式和数据布局。 Java 有一些用于创建 Excel 文件的库&#xff0c;例如Apache POI。这些库都很好&#xff0c;但都是一些较底层的库&#xff0c;因为它们要…

【网络安全】图解 Kerberos:身份认证

图解 Kerberos&#xff1a;身份认证 1.什么是 Kerberos &#xff1f;2.Kerberos 基本概念2.1 基本概念2.2 KDC 3.Kerberos 原理3.1 客户端与 Authentication Service3.2 客户端与 Ticket Granting Service3.3 客户端与 HTTP Service Kerberos 是一种身份认证协议&#xff0c;被…

[杂谈]-电动汽车有哪些不同类型

电动汽车有哪些不同类型&#xff1f; 文章目录 电动汽车有哪些不同类型&#xff1f;1、概述2、纯电动汽车&#xff08;BEV&#xff09;3、燃料电池电动汽车&#xff08;FCEV&#xff09;4、插电式混合动力汽车 (PHEV&#xff09;5、混合动力电动汽车 (HEV)6、轻度混合动力HEV7、…

ZooInspector

一、在window&#xff0c;使用我们先打开Zookeeper,目录bin下的zkServer.cmd&#xff0c;把Zookeeper运行起来 ​编辑https://img.111com.net/attachment/art/187687/5f0c25fbe580c.png 二、可以使用目录bin下的zkCli.cmd&#xff0c;查询Zookeeper数据的方式&#xff0c;但是…

【C进阶】分析 C/C++程序的内存开辟与柔性数组(内有干货)

前言&#xff1a; 本文是对于动态内存管理知识后续的补充&#xff0c;以及加深对其的理解。对于动态内存管理涉及的大部分知识在这篇文章中 ---- 【C进阶】 动态内存管理_Dream_Chaser&#xff5e;的博客-CSDN博客 本文涉及的知识内容主要在两方面&#xff1a; 简单解析C/C程序…

基于VueCli创建自定义项目

1.安装脚手架 (已安装) npm i vue/cli -g2.创建项目 vue create hm-exp-mobile选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) > Manually select features 选自定义手动选择功能 选择vue的版本 3.x …