目录

  • 1. 定义获取数据函数
  • 2. RSI基本概述
  • 3. python编写Rsi函数
  • 4. python编写Rsi绘图函数
  • 5. 调用以上函数
  • 6.RSI指标判断股票超买和超卖状态
  • 7. RSI的“黄金交叉”与“死亡交叉”
  • 8. 细节改进

1. 定义获取数据函数

第一步,我们照常从tushare获取数

import tushare as ts
import pandas as pd
token = 'Your token'   # 输入你的接口密匙,获取方式及相关权限见Tushare官网。这句话不能照抄!
pro = ts.pro_api(token)
def get_data(tscode):df = pro.daily(ts_code=tscode)df = df.loc[:, ['trade_date', 'open', 'high', 'low', 'close', 'vol']]df.rename(columns={'trade_date': 'Date', 'open': 'Open','high': 'High', 'low': 'Low','close': 'Close', 'vol': 'Volume'},inplace=True)       # 重定义列名,方便统一规范操作。df['Date'] = pd.to_datetime(df['Date'])  # 转换日期列的格式,便于作图df.set_index(['Date'], inplace=True)  # 将日期列作为行索引df = df.sort_index() # 倒序以便作图return df

2. RSI基本概述

RSI即相对强弱指标(Relative Strength Index),是在股票市场上用于衡量证券自身内在强度的指标,用于判断股票买方力量与卖方力量的强弱,进而预测价格走势。
计算公式如下:
RSI=100−1001+RS\displaystyle RSI=100-\frac{100}{1+RS}RSI=100−1+RS100​ 或 RSI=100×RS1+RS\displaystyle RSI=100×\frac{RS}{1+RS}RSI=100×1+RSRS​
其中:RS=UPDOWN\displaystyle RS=\frac{UP}{DOWN}RS=DOWNUP​
故上述公式也即RSI=100×UPUP+DOWN\displaystyle RSI=100×\frac{UP}{UP+DOWN}RSI=100×UP+DOWNUP​

  • UP表示t期内股价上涨幅度的平均值
  • DOWN表示t期内股价下跌幅度的平均值
  • 该均值使用不同均值类型计算出的结果会有所差异。
  • RSI接近于0的时候,UP≪Down
  • RSI接近于100的时候UP≫Down
  • RSI取值为50时UP=Down

总之

  • RSI大于50越多,表明股票上涨的力量超过下跌的力量越大。
  • RSI小于50越多,表明股票下跌的力量超过上涨的力量越大。

3. python编写Rsi函数

# 默认时间跨度设为6天
import pandas as pd
import numpy as np
def rsi(price, period=6):clprcChange = price - price.shift(1)clprcChange = clprcChange.dropna()indexprc = clprcChange.indexupPrc = pd.Series(0, index=indexprc)upPrc[clprcChange > 0] = clprcChange[clprcChange > 0]downPrc = pd.Series(0, index=indexprc)downPrc[clprcChange < 0] = -clprcChange[clprcChange < 0]risdata = pd.concat([price, clprcChange, upPrc, downPrc], axis=1)risdata.columns = ['price', 'PrcChange', 'upPrc', 'downPrc']risdata = risdata.dropna()SMUP = []SMDOWN = []for i in range(period, len(upPrc) + 1):SMUP.append(np.mean(upPrc.values[(i - period): i], dtype=np.float32))SMDOWN.append(np.mean(downPrc.values[(i - period): i], dtype=np.float32))rsi = [100 * SMUP[i] / (SMUP[i] + SMDOWN[i]) for i in range(0, len(SMUP))]indexRsi = indexprc[(period - 1):]rsi = pd.Series(rsi, index=indexRsi)return rsi

韦尔斯·威尔德(Wells Wilder)指出,通过运用月周期28天的一半来计算RSI的值进行预测是有效的,他推荐14日为时间跨度。

一些常用的看盘软件设有6日RSI,12日RSI,24日RSI三个RSI指标。

  • 6日近似一周的时间周期
  • 12日近似半个月的时间周期
  • 24日近似一个月的时间周期
  • 此外也有人用RSI1表示6日相对强度指标,RSI2日表示12日相对强度指标,RSI3表示24日相对强度指标。

4. python编写Rsi绘图函数

import matplotlib.pyplot as plt
# 传入rsi_x时要记着切片
def rsi_plot(rsi_x):plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falsefig,ax = plt.subplots()plt.xlim(rsi_x.index[0],rsi_x.index[-1])plt.ylim(0,100)plt.grid(True)plt.xlabel('日期')plt.ylabel('rsi_values')fig.patch.set_facecolor('red')fig.patch.set_alpha(0.6)ax.patch.set_facecolor('yellow')ax.patch.set_alpha(1)plt.plot(rsi_x,color='r')plt.title('RSI指标图')

5. 调用以上函数

# 以平安银行为例
df = get_data('000001.SZ')
# 计算rsi
rsi6=rsi(df.Close)
# 以2020年全年数据为例绘图
rsi_plot(rsi6['2020'])

图像效果如下:

6.RSI指标判断股票超买和超卖状态

除了上边说到的0,50,100三个位点的状况,我们还可以刻画超买线,超卖线,和中心线。
RSI取值等于80和20分别为比较常用的“超买线”和“超卖线”。RSI为80表示超买的临界点,RSI为20表示超卖的临界点,RSI取值为50设定为“中心线”,表明买入力量等于卖出力量。

  • RSI大于80时,股票出现超买信号,股票买入力量过大,买入力量未来可能会减小,股票价格可能会下跌;
  • RSI小于20时,股票出现超卖信号,股票卖出力量过大,卖出力量未来可能会回归正常,因此股票价格可能会上涨。
  • 超买线和超卖线的刻画可以有所变化,90和10也是可以的,70和30也已被验证能够有效预测股票走势。具体选择,仁者见仁智者见智。

7. RSI的“黄金交叉”与“死亡交叉”

在股票市场使用RSI指标时,一般会定义不同的时间跨度的RSI值。

  • 当短期RSI向上穿过长期RSI线时,股票近期买入力量较强,价格上涨力量很大,其释放出一个较强的买入信号,这个信号被称为黄金交叉
  • 当短期RSI向下跌破长期RSI的时候,股票近期卖出力量较强,价格下跌力量很大,其释放出一个较强的卖出信号,被称为死亡交叉

用rsi6和rsi24来绘制RSI黄金交叉和死亡交叉
定义为函数形式

import matplotlib.pyplot as plt
def mult_rsi(rsi6,rsi12):plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falsefig,ax = plt.subplots()plt.xlim(rsi6.index[0],rsi6.index[-1])plt.ylim(0,100)plt.grid(True)plt.xlabel('日期')plt.ylabel('rsi_values')fig.patch.set_facecolor('red')fig.patch.set_alpha(0.6)ax.patch.set_facecolor('yellow')ax.patch.set_alpha(1)plt.plot(rsi6,color='r',label='RSI6')plt.plot(rsi12,color='g',label='RSI12')plt.legend()plt.title('双RSI线图')

调用并查看结果

rsi6 = rsi(df.Close)
rsi12 = rsi(df.Close, 12)
mult_rsi(rsi6['2020'],rsi12['2020'])

生成图像效果如下:

(这里选了一年的数据,选择时间较长。如选择更短时间段的数据,方便研究更多细节。)

8. 细节改进

比RSI信号指标释放出买卖点信号滞后3天或数天再执行买卖操作,有时会比滞后一天效果更理想。

Python 金融量化 RSI相对强弱指标相关推荐

  1. python金融量化分析 | 闲杂笔记

    最近事情好像有点多,处理得心不在焉.之前国庆计划把张五常老师的经济解释卷二看完,但也是只把第三章生产的成本看了一下,哈哈~ 这是一篇python金融量化分析的闲杂且入门的笔记,感觉学习价值较低,我只是 ...

  2. Python金融量化 | 从入门到高阶实战应用

    引言 今天给大家分享一个微信公众号"Python金融量化",作者是金融学博士,堪萨斯大学访问学者,专注于分享Python在金融量化领域的实战应用,坚持走原创路线,持续输出技术干货, ...

  3. 【Python金融量化】零基础如何开始学?

    前言 Python可以说是当前非常流行的编程语言,甚至有点"网红"的感觉.网上还流行一句话"Life is short, I use Python"(人生短暂, ...

  4. 【Python金融量化】财经新闻文本分析

    内容来自:微信公众号:python金融量化 关注可了解更多的金融与Python干货. 引言 "80%的商业信息来自非结构化数据,主要是文本数据"(Seth Grimes),这一说法 ...

  5. RSI相对强弱指标策略-指标定义、计算公式与策略思考

    RSI 相对强弱指标策略 RSI 是用一种特定公式计算出来的值,投资者可以通过 RSI 的取值来判断股票的买入和卖出情况,进而预测未来股票的价格走势.例如,如果股票的买入力量大于股票的卖出力量,则可以 ...

  6. python金融实战 源代码_穆棱市seo总代直销python金融量化营业实战课程 python量化项目实战源码+课件+视频...

    python金融量化生意实战课程 python量化项目实战源码+课件+视频 1. 自愿化生意综述 重要实质: 课程实质综述,自愿化/算法生意先容,python正在自愿生意中的使用简介 2. 量化生意体 ...

  7. python金融量化风险_【手把手教你】Python量化策略风险指标

    如何衡量一个量化策略的好坏?一是比较稳定的收益,二是有严谨的回测,三是有清晰的逻辑.--刘富兵 引言 尽管过去不能代表未来,通过历史回测来评估量化策略仍然是量化投资非常重要的一环.量化回测过程中常用到 ...

  8. python金融量化风险_利用 Python 进行量化投资分析 - 利率及风险资产的超额收益...

    本文是 利用 Python 进行量化投资分析 系列的第一篇文章,这个系列主要以 Python 作为工具,结果国内金融市场情况,及使用真实历史数据来实践一些基础的金融投资概念. 这篇文章主要讲述了真实利 ...

  9. python金融量化书籍_超强干货 | Python金融数据量化分析教程+机器学习电子书

    如今Python语言的学习已经上升到了国家战略的层面上.Python语言是人工智能的基础语言,国家相关教育部门对于"人工智能普及"格外重视,不仅将Python列入到小学.中学和高中 ...

最新文章

  1. Golang反射机制的实现分析——reflect.Type方法查找和调用
  2. LBP特征的理论介绍
  3. PowerShell学习笔记(1)-基础
  4. 0130互联网新闻 | 小红书完成超3亿美元D轮融资;网易游戏收购Quantic Dream工作室少数股权...
  5. Android -- 自定义View小Demo,绘制四位数随机码(一)
  6. k3s,k9s harbor https
  7. Ruby之父松本行弘的编程人生
  8. 刷题学习—数据结构(字符串、栈和队列、链表、数组与矩阵、哈希表、位运算)
  9. C# 添加windows右键菜单
  10. Beyond 比对工具
  11. SKlearn - ValueError: Unknown label type: 'continuous'
  12. App Widgets 详解四 RemoteViews、RemoteViewsService和RemoteViewsFactory
  13. 利用MapReduce计算运营商上行下行流量
  14. 盘点 8 款好用的 API 接口文档管理工具
  15. Lazadashopee热销产品有哪些?运动户外类目快速增长
  16. 利用Hound快速搭建代码搜索引擎
  17. 2021旗帜软件工作室年会总结
  18. Linux 抓取网页实例(shell+awk)
  19. matlab自带滤波器函数小结(图像处理)
  20. 衡石可视化:从 eCharts 到 namjagbarwa

热门文章

  1. WSN(3)(1):第三章  无线传感网络的通信与组网
  2. Monkey框架(基础知识篇) - monkey事件介绍
  3. 计算机无法连接iphone,iPhone连接电脑没反应,怎么办?
  4. win7怎么设置热点让手机连接?热点共享网络的方法
  5. 百度地图 JavaScript API
  6. XiaoHu日志 9/5~9/6
  7. ipad服务器未响应怎么办,ipad pro死机怎么办?ipad pro无反应解决方法
  8. 英语和数学不好,能学编程吗?
  9. HTML5 canvas 实现小时钟
  10. MySQL 提问的技巧