Ich bin ein Neuling für R und ich habe einige Probleme mit der Erstellung eines technischen Indikators. Genauer gesagt möchte ich einen Indikator Fibonacci
erstellen, der zu chartSeries
hinzugefügt wird und aus 5 horizontalen Zeilen besteht. Die Daten, mit denen ich arbeite, sind die Schlusskurse einer Aktie. Der Graph, den ich erstellen möchte, hat also eine horizontale Linie im Punkt des maximalen Schlusskurses, eine horizontale Linie im Punkt des minimalen Schlusskurses und drei horizontale Linien zwischen den beiden vorherigen. Der Code, den ich um die fünf Werte einer Zeitreihe der Schlusskurse der Aktie zu nehmen geschrieben hat, ist die folgende:Wie man einen technischen Indikator im quantmod-Paket erstellt
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)
}
ich auch den folgenden Code, um die technische Indikator zur bestehenden chartSeries
Plot hinzufügen geschrieben von quantmod
Paket:
addFibonacci<- function(col = "red",overlay = TRUE){
stopifnot("package:TTR" %in% search() || require("TTR", quietly = TRUE))
lchob <- quantmod:::get.current.chob()
x <- as.matrix([email protected])
chobTA <- new("chobTA")
[email protected] <- !overlay
if (!is.OHLC(x))
stop("Fibonacci requires HL series")
else {
fibon <- Fibonacci(Cl(x))
}
[email protected] <- fibon[[email protected]]
[email protected] <- match.call()
[email protected] <- 1
[email protected] <- list(xrange = [email protected], colors = [email protected],
color.vol = [email protected], multi.col = [email protected],
spacing = [email protected], width = [email protected], bp = [email protected],
x.labels = [email protected], time.scale = [email protected],
col = col)
if (is.null(sys.call(-1))) {
TA <- [email protected]$TA
[email protected]$TA <- c(TA, chobTA)
[email protected] <- [email protected] + ifelse([email protected], 1,
0)
chartSeries.chob <- quantmod:::chartSeries.chob
do.call(chartSeries.chob, list(lchob))
invisible(chobTA)
}
else {
return(chobTA)
}
}
das Problem ist, dass die Anzeige nicht auf das Diagramm hinzugefügt zu werden, und ich bin auch die folgende Fehlermeldung erhalten:
Error in do.call([email protected]$TA[[j]]@name, list([email protected]$TA[[j]])) :
'what' must be a character string or a function
Irgendwelche Ideen für das, was ich falsch mache?
Vielen Dank für die Antwort und Hilfe. Ich wusste nicht, dass ich die newTA-Funktion verwenden könnte. Ich wundere mich nur, warum ich nicht einfach addFibonacci() aufrufen kann und das Plot, das ich will, wie alle AddTA-Funktionen nehme, und stattdessen muss ich die chartSeries-Funktion aufrufen? Zum Beispiel, wenn ich die addFibonacci aufrufen, nehme ich: Fehler in addFibonacci(): Objekt 'chartSeries.chob' nicht gefunden – user3017291