在公众号「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进行算法交易相关推荐

  1. 听说三年前那些月入30K的程序员都是这样开始轻松构建算法交易机器:一点python基础+一点运气

    全文共3071字,预计学习时长9分钟 图源:Unsplash 人工智能的新突破每天都成为头条新闻.在金融领域,因其具有深厚历史.清楚明了和结构化数据,机器学习广泛运用.最终,金融领域成为了" ...

  2. python机器交易_全解用 Python 建立能源市场算法交易的机器学习框架

    原标题:全解用 Python 建立能源市场算法交易的机器学习框架 编译:数据派 - 笪洁琼 ,冯羽 , 英文:SIMON KUTTRUF 前言 人工智能的新突破每天都成为头条新闻.在金融领域,机器学习 ...

  3. 使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象

    使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象 1. 效果图 2. 源码 2.1 MeanShift 2.2 Camshift(Continuo ...

  4. 【Python】用Python实现十大经典排序算法

    来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 大家好,我是阳哥. 最近一段时间,我在微信视频号「Python数据之道」上陆陆续续发布了10种经典排序算法的动画实现. 今天,想以 ...

  5. 八十五、Python | Leetcode数据结构之图和动态规划算法系列

    @Author:Runsen @Date:2020/7/7 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  6. Python内存管理方式和垃圾回收算法解析

    在列表,元组,实例,类,字典和函数中存在循环引用问题.有 del 方法的实例会以健全的方式被处理.给新类型添加GC支持是很容易的.支持GC的Python与常规的Python是二进制兼容的. 分代式回收 ...

  7. 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 ...

  8. python:实现balanced parentheses平衡括号表达式算法(附完整源码)

    python:实现balanced parentheses平衡括号表达式算法 from .stack import Stack def balanced_parentheses(parentheses ...

  9. Python:实现gauss easte高斯复活节日期算法(附完整源码)

    Python:实现gauss easte高斯复活节日期算法 import math from datetime import datetime, timedeltadef gauss_easter(y ...

  10. Python数据挖掘入门与实践-OneR分类算法

    Python数据挖掘入门与实践-OneR分类算法 OneR算法 OneR算法是根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类. 在本例中,只需选区Iris是个特征中分类效果最好的一个 ...

最新文章

  1. 关于无法把程序(Adobe Fireworks CS5)添加到打开方式的解决办法
  2. C++非类型模板参数
  3. SpringMVC 之拦截器和异常处理
  4. 使用JDBC进行简单连接
  5. 如何避免踩坑--初创技术团队组建风险预估
  6. 【2021新版】一线大厂 Go 高频面试题,整理分析合集
  7. 网络拓扑结构与静态特征
  8. 百度地图API 海量点 自定义添加信息
  9. 光栅衍射主极大个数_基于达曼光栅的双目视觉系统
  10. SQL Server分组查询某最大值的整条数据(包含linq写法)
  11. HDU 5643 约瑟夫环的应用
  12. 全球稀缺的Kaldi学习资料,《Kaldi语音识别实战》给补上了!
  13. 学习笔记1-【计算机组成原理】-【计算机科学速成课】[40集全/精校] - Crash Course Computer Science
  14. 给个华为服务器账号和密码忘了怎么办啊,华为路由器登陆用户名和密码忘了怎么办?...
  15. 为什么要选择平台+独立站运营的双轨模式
  16. AT32F407/437 PTP Daemon使用demo
  17. 阿里巴巴集团急招职位
  18. 数值分析中MATLAB的应用
  19. 【LOJ574】「LibreOJ NOI Round #2」黄金矿工
  20. java dozer_java – Dozer双向映射(String,String)与自定义转换器不可能?

热门文章

  1. Lua调用c++ DLL 文件
  2. php布署 群辉_docker一键搭建Nginx+PHP环境(含自动部署命令)
  3. android studio在夜神上打开_Android Studio 找不到夜神模拟器的解决办法
  4. 贵州全国计算机二级报名官网入口,2019年3月贵州全国计算机二级考试报名入口已开通...
  5. 【转】解决Navicat 报错:1130-host ... is not allowed to connect to this MySql server,MySQL不允许从远程访问的方法 .
  6. 苹果HomeKit智能家居战略藏野心:欲实现下一次颠覆
  7. ActiveMQ(19):高级特性之独有消费者(Exclusive Consumer)
  8. ubuntu16.04下怎么安装flash player
  9. 免费制作gif图片工具
  10. 托管代码 非托管代码