Hello,

I'd like to integrate the Fibonacci graph as a TA indicator for stock
analysis.  So fat I wasn't able to do so.  From the web, I found something
(below) but it didn't work either.

My goal is to develop a function that uses the price column of a data frame
along with the start and end dates of the period of interest, which are
obtained from either its index or a given data frame column.  From these
data the Fibonacci levels from the indicator are plotted.

https://stackoverflow.com/questions/20192913/how-to-create-a-technical-indicator-in-quantmod-package/79737478#79737478

The Fibonacci function and indicator are below,

Fibonacci <- function(x) {
x <- try.xts(x, error = as.matrix)
n <- nrow(x)min <- runMin(x,n=n)max <- runMax(x,n=n)
high <- 0.62*(max-min) + min
middle <- 0.5*(max-min) + min
low <- 0.38*(max-min) + min
res <-cbind(na.spline(min),na.spline(max),na.spline(high),
            na.spline(middle),na.spline(low))
colnames(res)<- c("min","max","high","middle","low")
reclass (res, x)}

addFibonacci <- function (..., on = 1, legend = "auto") {
    #lchob <- get.current.chob()
    lchob <- quantmod:::get.current.chob()
    x <- as.matrix(lchob@xdata)
    x <- Fibonacci(x = x)
    yrange <- NULL
    chobTA <- new("chobTA")
    if (NCOL(x) == 1) {
        chobTA@TA.values <- x[lchob@xsubset]
    }
    else chobTA@TA.values <- x[lchob@xsubset, ]
    chobTA@name <- "chartTA"
    if (any(is.na(on))) {
        chobTA@new <- TRUE
    }
    else {
        chobTA@new <- FALSE
        chobTA@on <- on
    }
    chobTA@call <- match.call()
    legend.name <- gsub("^add", "", deparse(match.call()))
    gpars <- c(list(...), list())[unique(names(c(list(), list(...))))]
    chobTA@params <- list(xrange = lchob@xrange, yrange = yrange,
        colors = lchob@colors, color.vol = lc...@color.vol, multi.col
= lc...@multi.col,
        spacing = lchob@spacing, width = lchob@width, bp = lchob@bp,
        x.labels = lchob@x.labels, time.scale = lchob@time.scale,
        isLogical = is.logical(x), legend = legend, legend.name = legend.name,
        pars = list(gpars))
    if (is.null(sys.call(-1))) {
        TA <- lc...@passed.args$TA
        lc...@passed.args$TA <- c(TA, chobTA)
        lchob@windows <- lchob@windows + ifelse(chobTA@new, 1,
            0)
        chartSeries.chob <- chartSeries.chob
        do.call("chartSeries.chob", list(lchob))
        invisible(chobTA)
    }
    else {
        return(chobTA)
    }}

Using the TA indicator function suggested I got,

R> getSymbols("AAPL")

[1] "AAPL"
R> addFibonacci <- newTA(Fibonacci,on=1)
R> chartSeries(AAPL, TA="addFibonacci()")
Error in runMin(x, n = n) (from #4) :
  ncol(x) > 1. runMin only supports univariate 'x'
R> R> Fibonacci(AAPL)
Error in runMin(x, n = n) (from #4) :
  ncol(x) > 1. runMin only supports univariate 'x'
R>

Any help is greatly appreciated.


Regards,

--
André Luiz Tietbohl Ramos, PhD

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to