0

Как вычислить скользящую среднюю (или другие технические индикаторы) в R с использованием разных параметров длины в разные периоды?Скользящее среднее с подвижной длиной

require(quantmod) 
library(chron) 
library(caTools) 

## rm(list=ls()) 

# Get the data 
from.dat <- as.Date("2015-01-01") 
#to.dat <- as.Date("2000-01-01") 

ES<-getSymbols("^GSPC" , from = from.dat,auto.assign = FALSE) # to today 

data<-ES 
rm(ES) 
data<-data[,6] 
names(data)<-c("ES") 


# create vectore with dummy values 
data$num <- rep(10,length(data$ES)) 
for(i in 2:length(data$num)){ 
     if (data$num[i-1] == 10) {data$num[i] <- 5} 
} 


# moving average with moving length 
data$sma<-SMA(data$ES,data$num) 
plot(data$ema) 

Сюжет не показывает даже скользящую среднюю. Как использовать технические индикаторы с параметрами движущейся длины?

ответ

1

Если я понимаю, что вы исправляете, вы хотите, чтобы данные $ sma были вектором переменной длины-5 в среднем и длиной-10 в среднем.

l5sma <- SMA(data$ES, 5) 
l10sma <- SMA(data$ES, 10) 

data$sma <- ifelse(data$num == 5, l5sma, l10sma) 
plot(data$ES) 
lines(data$sma, col = 3) 

enter image description here

+0

Спасибо Floo0, но я искал какой-то более общего сценария. Что делать, если у меня есть вектор с гораздо более длинными элементами, которые меняются с течением времени? – gcats