Поиск оптимального коэффициента для EMA

Apr 03, 2013 15:51

В продолжение к моей небольшой библиотчке для вычислений EMA, написал некий аналог функции SOLVE(). Используется метод "Золотого Сечения", однако в последствии думаю его несколько дополнить:

## golden selection
global.phi <- (sqrt(5) - 1) / 2

#get average error
ema.error <- function(x, e) {
l <- length(x)
sum(abs(x[2:l] - e[1:(l-1)])) / (l-1)
}

#solve ema coefficient
ema.solve <- function(x, y0=0, y1=1, tolerance=0.0001, method="golden", returnSize=FALSE) {
ret <- NA
if (method == "golden") {
repeat {
yn0 <- y0 + (1 - global.phi) * (y1 - y0)
yn1 <- y0 + global.phi * (y1 - y0)

e0 <- ema.error(x, ema(x, yn0))
e1 <- ema.error(x, ema(x, yn1))

if (e0 < e1)
y1 <- yn1
else
y0 <- yn0

if ((y1 - y0) < tolerance)
break
}

ret <- (y0 + y1) / 2
if (returnSize)
ret <- round(2 / ret - 1)
} else
cat("Unknown method: ", method, "\n")

ret
}

r project, пособие по вкручиванию лампочек

Previous post Next post
Up