在公众号「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. java get 空指针_Java 中空指针处理方法
  2. 实用常识 | 分享一个LeetCode个人主页的动态ASCII码
  3. 2--OC -- 类的创建与实例化
  4. java 重载 调用指定_java 方法重载的时候,同一个类,父子类,调用哪个方法的问题...
  5. vb集合类接收子类事件时,给集合类赋值应注意的一个定义
  6. 微信小程序开发入门与实践
  7. Swing-文本输入组件(一)
  8. Java反编译插件Jdclipse导致Eclipse 3.7.2启动崩溃的解决方法
  9. 计算机考试的话语,鼓励别人考试的句子
  10. 图纸管理软件有哪些,免费图纸管理软件
  11. linux wifi6 笔记本网卡,老旧笔记本电脑也能用WIFI6?无线网卡更换实录
  12. 元器件_封装库_命名规范
  13. 技术分享 | gh-ost 在线 ddl 变更工具​
  14. 4_竞赛无人机基本自动飞行支持函数与导航控制函数解析——零基础学习竞赛无人机搭积木式编程
  15. 神经网络系统图片高清,神经网络系统图片结构
  16. 面试高薪程序员之高频面试题(一),集合,JVM,高并发多线程等
  17. 精益思想—人、过程和技术的集成(zt)
  18. 视觉SLAM(一)——视觉SLAM框架
  19. 打造最具创新力的开源数据库社区 | 【重庆】openGauss Meetup圆满结束
  20. 配置一套个人学习AI技术的计算机

热门文章

  1. Linux使用Blowfish生成密码,linux批量生成密码
  2. android studio进行增删改查代码_使用C#进行数据库增删改查(二)
  3. 汇编语言第2版---笔记(第一章基础知识)
  4. python控制台输出_替换Python中的控制台输出
  5. mysql存储过程多值_mysql存储过程之返回多个值的方法示例
  6. 大物实验计算弹性模量_什么是材料的杨氏模量?它的定义与计算公式是什么?...
  7. 2019刚开年全球天气已“爆表” 多国极端天气打破历史纪录
  8. 选择排序之python实现
  9. Python基础学习九 单元测试
  10. 突然决定要记笔记,于是就来到了博客园,希望自己能够坚持下去