Rで株のテクニカル分析で利用するRSIの計算を行います。
利用データ
今回の分析で活用するデータは以下よりDLしてください。
library(lubridate)
library(clipr)
library(tidyverse)
library(RcppRoll)
d <- read.csv('TimeChart.csv',encoding = "SJIS")
# 期間
n <- 14
d$終値 <- gsub(pattern = ",",replacement = "",x = d$終値)
d$終値 <- as.integer(d$終値)
d_tbl <- d %>%
select(日付,終値)
RSI計算
d_tbl_2 <- d_tbl %>%
ungroup() %>%
mutate(
lead_col = lead(終値,n = 1)
) %>%
mutate(
diff_yesterday = 終値 - lead_col
)
d_tbl_2$col_plus <- ifelse(d_tbl_2$diff_yesterday > 0,d_tbl_2$diff_yesterday,NA)
d_tbl_2$col_minus <- ifelse(d_tbl_2$diff_yesterday < 0,d_tbl_2$diff_yesterday,NA)
#### RSI計算 ####
d_tbl_2 <- d_tbl_2 %>%
ungroup() %>%
mutate(
mean_plus = roll_mean(col_plus,n,fill=NA,align = 'left',na.rm = T),
mean_minus = roll_mean(col_minus,n,fill=NA,align = 'left',na.rm = T) * -1
) %>%
mutate(
RSI = round(mean_plus / (mean_plus + mean_minus) * 100,2)
)