RでRSIの計算

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

参考

第8回 RSI(Relative Strength Index) au証券