python rsi_使用python与rsi进行算法交易
在公众号「python风控模型」里回复关键字:学习资料
机器学习是计算密集型的,因为算法不是确定性的,因此必须随着时间的推移不断调整。然而,技术指标要快得多,因为方程式没有改变。因此,这提高了他们用于实时交易的能力。
什么是 RSI?
要创建使用 RSI 的程序,我们必须首先了解 RSI 指标。RSI 是相对强弱指数的缩写。它是一个动量指标,使用价格变化的幅度来评估证券是否超买或超卖。
如果 RS一世 值超过70,证券被认为是超买,如果值低于30,则被认为是超卖。超买是指买入造成的泡沫可能很快就会破灭,因此价格会下跌。这创造了一个强大的切入点。
然而,好的做法是仅当 RSI 值与超买线相交时才下卖单,因为这是一种更保守的方法。至少可以猜测 RSI 何时会达到最高点。
概念:
本程序试图使用 talib(技术分析)库来实现 RSI 线与超卖超买线的交点。该程序的大部分内容并非来自对指标的编程(因为它是在库中创建的),而是实现了如何使用超卖和超买区域进行交易。
import yfinance
import talib
from matplotlib import pyplot as plt
这些是该计划的先决条件。Yfinance 用于下载股票数据,talib 用于计算指标值。Matplotlib当然是将数据绘制成图形。
数据 = yfinance.download('NFLX','2016-1-1','2020-1-1')
rsi = talib.RSI(data["Close"])
此脚本访问数据并根据以下两个方程计算 rsi 值:
RSIstep1 =100−[100/(1+平均损失/平均收益 )]
RSIstep2 =100−[100/(1+平均平均损失∗13+当前损失/之前的平均收益∗13+当前收益 ) ]
fig = plt.figure()
fig.set_size_inches((25, 18))
ax_rsi = fig.add_axes((0, 0.24, 1, 0.2))
ax_rsi.plot(data.index, [70] * len(data.index), label="overbought")
ax_rsi.plot(data.index, [30] * len(data.index), label="oversold")
ax_rsi.plot(data.index, rsi, label="rsi")
ax_rsi.plot(data["Close"])
ax_rsi.legend()
该图显示了所有超买和超卖区域,以及为记录的股票收盘价的每个值计算的 RSI 值。这提供了股票数据的良好可视化
这是结果图。随着时间的推移,我们可以看到 RSI 值在不同部分之间波动。RSI 的好处在于它是相对的。这意味着信号的强度与实际值无关,而是与过去值的关系。
缺失的步骤:
通常,文章到此为止。他们在给出股票交易程序的初步代码后结束。有必要更进一步,真正评估股票交易计划,基于该计划的盈利能力。这就是为什么我要交出程序。
section = None
sections = []
for i in range(len(rsi)): if rsi[i] < 30:section = 'oversold'elif rsi[i] > 70:section = 'overbought'else:section = Nonesections.append(section)
这个脚本记录了每个点落入的部分。它要么处于超买、超卖或无区域,即在两条线之间。
trades = []
for i in range(1,len(sections)):trade = Noneif sections[i-1] == 'oversold' and sections[i] == None:trade = Trueif sections[i-1] == 'overbought' and sections[i] == None:trade = Falsetrades.append(trade)
该脚本集成了 RSI 交易的基本策略。交易策略是当价值离开超买和超卖部分时,它进行适当的交易。例如,如果它离开超卖部分,则进行买入交易。如果它离开超买部分,则进行卖出交易。
acp = data['Close'][len(data['Close'])-len(trades):].values
profit = 0
qty = 10
for i in range(len(acp)-1):true_trade = Noneif acp[i] < acp[i+1]:true_trade = Trueelif acp[i] > acp[i+1]:true_trade = Falseif trades[i] == true_trade:profit += abs(acp[i+1] - acp[i]) * qtyelif trades[i] != true_trade:profit += -abs(acp[i+1] - acp[i]) * qty
此脚本使用程序进行的交易来计算每笔交易的利润或亏损。这给出了对程序的最佳评估,因为它准确地针对要查找的变量。qty 变量计算购买了多少股。
运行程序后,计算的利润为:
Profit : $58.3
结论:
事实上,考虑到风险回报率,58.3 美元的利润实际上并不是一个很好的投资。有很多方法可以改进程序:
调整耐心变量
这个变量是在 RSI 值之后多久进行交易。调整这个值,找到一个模式,并优化它以获得更好的结果。
2. 找到最好的公司
该算法对哪种股票最有效?在不同的公司上测试此程序以进行评估。
再找中国恒大5年数据为例,这是中国恒大近5年的K线图
相应的RSI绘图如下,我们可以看到一些交易数据在oversold超卖线下,意味着以后可能有上涨空间。
提醒一下,股票历史数据是滞后信息,我们要盯紧公司自身经营状况,然后决定此公司是否有投资价值,公司舆情信息先于股票大盘数据,会反应到股票大盘上。虽然中国恒大有些数据低于oversold,但此公司最近舆情负面消息太多,建议大家抄底需要谨慎。除非政府有救助意向,否则中国恒大股票会长期继续阴跌。
Python 的 RSI 算法交易就介绍到这里,欢迎各位同学报名《呆瓜半小时入门python数据分析》,学习更多相关知识 。
python rsi_使用python与rsi进行算法交易相关推荐
- 听说三年前那些月入30K的程序员都是这样开始轻松构建算法交易机器:一点python基础+一点运气
全文共3071字,预计学习时长9分钟 图源:Unsplash 人工智能的新突破每天都成为头条新闻.在金融领域,因其具有深厚历史.清楚明了和结构化数据,机器学习广泛运用.最终,金融领域成为了" ...
- python机器交易_全解用 Python 建立能源市场算法交易的机器学习框架
原标题:全解用 Python 建立能源市场算法交易的机器学习框架 编译:数据派 - 笪洁琼 ,冯羽 , 英文:SIMON KUTTRUF 前言 人工智能的新突破每天都成为头条新闻.在金融领域,机器学习 ...
- 使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象
使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象 1. 效果图 2. 源码 2.1 MeanShift 2.2 Camshift(Continuo ...
- 【Python】用Python实现十大经典排序算法
来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 大家好,我是阳哥. 最近一段时间,我在微信视频号「Python数据之道」上陆陆续续发布了10种经典排序算法的动画实现. 今天,想以 ...
- 八十五、Python | Leetcode数据结构之图和动态规划算法系列
@Author:Runsen @Date:2020/7/7 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- Python内存管理方式和垃圾回收算法解析
在列表,元组,实例,类,字典和函数中存在循环引用问题.有 del 方法的实例会以健全的方式被处理.给新类型添加GC支持是很容易的.支持GC的Python与常规的Python是二进制兼容的. 分代式回收 ...
- Python+OpenCV:理解k近邻(kNN)算法(k-Nearest Neighbour (kNN) algorithm)
Python+OpenCV:理解k近邻(kNN)算法(k-Nearest Neighbour (kNN) algorithm) 理论 kNN is one of the simplest classi ...
- python:实现balanced parentheses平衡括号表达式算法(附完整源码)
python:实现balanced parentheses平衡括号表达式算法 from .stack import Stack def balanced_parentheses(parentheses ...
- Python:实现gauss easte高斯复活节日期算法(附完整源码)
Python:实现gauss easte高斯复活节日期算法 import math from datetime import datetime, timedeltadef gauss_easter(y ...
- Python数据挖掘入门与实践-OneR分类算法
Python数据挖掘入门与实践-OneR分类算法 OneR算法 OneR算法是根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类. 在本例中,只需选区Iris是个特征中分类效果最好的一个 ...
最新文章
- 关于无法把程序(Adobe Fireworks CS5)添加到打开方式的解决办法
- C++非类型模板参数
- SpringMVC 之拦截器和异常处理
- 使用JDBC进行简单连接
- 如何避免踩坑--初创技术团队组建风险预估
- 【2021新版】一线大厂 Go 高频面试题,整理分析合集
- 网络拓扑结构与静态特征
- 百度地图API 海量点 自定义添加信息
- 光栅衍射主极大个数_基于达曼光栅的双目视觉系统
- SQL Server分组查询某最大值的整条数据(包含linq写法)
- HDU 5643 约瑟夫环的应用
- 全球稀缺的Kaldi学习资料,《Kaldi语音识别实战》给补上了!
- 学习笔记1-【计算机组成原理】-【计算机科学速成课】[40集全/精校] - Crash Course Computer Science
- 给个华为服务器账号和密码忘了怎么办啊,华为路由器登陆用户名和密码忘了怎么办?...
- 为什么要选择平台+独立站运营的双轨模式
- AT32F407/437 PTP Daemon使用demo
- 阿里巴巴集团急招职位
- 数值分析中MATLAB的应用
- 【LOJ574】「LibreOJ NOI Round #2」黄金矿工
- java dozer_java – Dozer双向映射(String,String)与自定义转换器不可能?
热门文章
- Lua调用c++ DLL 文件
- php布署 群辉_docker一键搭建Nginx+PHP环境(含自动部署命令)
- android studio在夜神上打开_Android Studio 找不到夜神模拟器的解决办法
- 贵州全国计算机二级报名官网入口,2019年3月贵州全国计算机二级考试报名入口已开通...
- 【转】解决Navicat 报错:1130-host ... is not allowed to connect to this MySql server,MySQL不允许从远程访问的方法 .
- 苹果HomeKit智能家居战略藏野心:欲实现下一次颠覆
- ActiveMQ(19):高级特性之独有消费者(Exclusive Consumer)
- ubuntu16.04下怎么安装flash player
- 免费制作gif图片工具
- 托管代码 非托管代码