Hello Igor, thanks so much for replying. Check this one:

VEMA <- function(x, volumes, n = 10, wilder = F, ratio = NULL, ...)

{

x <- try.xts(x, error = as.matrix)

if (n < 1 || n > NROW(x))

stop("Invalid 'n'")

if (any(nNonNA <- n > colSums(!is.na(x))))

stop("n > number of non-NA values in column(s) ", paste(which(nNonNA),

collapse = ", "))

x.na <- xts:::naCheck(x, n)

if (missing(n) && !missing(ratio))

n <- trunc(2/ratio - 1)

if (is.null(ratio)) {

if (wilder)

ratio <- 1/n

else ratio <- 2/(n + 1)

}

foo <- cbind(x[,1], volumes, VEMA.num(as.numeric(x[,1]), volumes, ratio), VEMA.den(volumes, ratio))

(foo[,3] / foo[,4]) -> ma

ma <- reclass(ma, x)

if (!is.null(dim(ma))) {

colnames(ma) <- paste(colnames(x), "VEMA", n, sep = ".")

}

return(ma)

}

VEMA.num <- function(x, volumes, ratio) {

ret <- c()

s <- 0

for(i in 1:length(x)) { s <- ratio * s + (1-ratio) * x[i] * volumes[i]; ret <- c(ret, s); }

ret

}

VEMA.den <- function(volumes, ratio) {

ret <- c()

s <- 0

for(i in 1:length(x)) { s <- ratio * s + (1-ratio) * volumes[i]; ret <- c(ret, s); }

ret

}

VEMA(1:20, 20:1, ratio=0.1)

VEMA(1:20, 20:1, ratio=0.9)

Check also here in this site:

https://www.financialwisdomforum.org...-stuff/EMA.htm