本文说明RSI指标。
RSI(Relative Strength Index):相对强弱指标,由技术分析大师 Wells Wilder 所发表,衡量一段时间内,投资标的涨跌趋势的相对指标。
计算公式:
RSI = 100 × 前N日涨幅的平均值 ÷ ( 前N日涨幅的平均值 + 前N日跌幅的平均值 )
RSI 大於 80 时为超买讯号,市场过热,看跌。
RSI 小於 20 时为超卖讯号,市场过冷,看涨。
黄金交叉时可以买进,死亡交叉时可以卖出。
import pandas as pd
import numpy as np
import yfinance as yf
import datetime as dt
import matplotlib.pyplot as plt
# rsi 函数
# 传入收盘价及RSI分析区间
def rsi(Close, period=14):
# 日涨跌
Spread = Close - Close.shift(1)
# 上涨幅度
up_range = pd.Series(index=Spread.index, data=Spread[Spread>0])
up_range = up_range.fillna(0)
# 下跌幅度(取正值,加负号)
down_range = pd.Series(index=Spread.index, data=-Spread[Spread<0])
down_range = down_range.fillna(0)
# 计算平均涨跌幅度
up_avg = []
down_avg = []
for i in range(period+1, len(up_range)+1):
up_avg.append(np.mean(up_range.values[i-period:i]))
down_avg.append(np.mean(down_range.values[i-period:i]))
# 计算 RSI
rsi = []
for i in range(len(up_avg)):
rsi.append( 100 * up_avg[i] / ( up_avg[i] + down_avg[i] ) )
rsi_series = pd.Series(index = Close.index[period:], data = rsi)
return rsi_series
# 开始时间
start=dt.datetime.today()-dt.timedelta(29)
# 结束时间
end=dt.datetime.today()
# 下载台股长荣(2603)历史交易资料
df_2603 = pd.DataFrame(yf.download("2603.TW", start=start, end=end))
print("df_2603:\n",df_2603.Close)
rsi_df = rsi(df_2603.Close, 14)
print("rsi:\n" ,rsi_df)
plt.plot(rsi_df)
plt.title('RSI')
plt.axhline(y=80, color='red')
plt.axhline(y=20, color='green')
plt.savefig("RSI.png")
使用yfinance取得个股历史资料及进行RSI指标计算及呈现。
<<: Day 26 | 共享 MobX store with get_it
>>: [前端暴龙机,Vue2.x 进化 Vue3 ] Day30.Vue3 网页小游戏(完结篇) | ♾ 台版鱿鱼游戏,玩?还是不玩?
AWS服务作为云端服务热门选项已有年余, 但是对於初来乍到的云端新手, 在浮沈於众多名词海与概念海之...
接下来要处理的是编辑的画面, 我们看一下昨天这个画面 右边有一个修改的按钮, 点下去之後就可以针对这...
在昨天我们谈完如何使用Azure Kubernetes Service部署Container应用程序...
前言 今天继续看看 event loop 的核心循环, uv_run() , 可以查看以下网址 ht...
盲打(Touch Typing)建立良好的键盘操作习惯 [系列文目录] 如果我们要使用编辑器进行有效...