/ / ChartSeries peut-il afficher plus d’un indicateur TTR lorsque la ligne chartSeries se trouve dans une instruction IF? - r, menu, rstudio, xts, quantmod

ChartSeries peut-il afficher plus d'un indicateur TTR, lorsque la ligne chartSeries est à l'intérieur d'une instruction IF? - r, menu, rstudio, xts, quantmod

Je prépare un menu qui est connecté àproduire un graphique où source est un objet xts et 3 indicateurs TTR. Il semble que "if-statement" soit regroupé autour de la ligne chartSeries, ce qui fait que tous les indicateurs ne sont pas visibles. Actuellement, même si vous modifiez l'ordre des indicateurs, le résultat affiche uniquement l'indicateur situé à la fin de la ligne de la série de graphiques.

Ci-dessous, vous voyez mon code que je lance dans R-Studio.

########################################################
# 1. Create a minimal df
########################################################
date <- as.Date(c("2015-10-11", "2016-11-11", "2017-12-11"))
o <- c(1459.60, 1458.47, 1457.71)
c <- c(1458.44, 1457.68, 1458.27)
h <- c(1459.76, 1459.01, 1458.27)
l <- c(1458.08, 1457.52, 1457.70)
v <- c(185, 24080, 9503)
a <- c(185, 24080, 9503)

d3 <- data.frame(date,o,c,h,l,v,a)
colnames(d3)[1:7] <- c("date", "open", "close", "high", "low", "volume", "adjusted")

########################################################
# 2. Produce an xts(x3) based on a df (d3)
########################################################
x3 <- xts(d3[,-1], order.by = d3$date)

########################################################
# 3. Extraction of menu, to select 1 which should
# create a graph with 3 indicators
########################################################
cat("14")
menu.level.1 <- readline(prompt="Please select just number 1: ")
if (menu.level.1 == 1) {
print("...create graph")
chartSeries(x3); addRSI(1); addMACD(2, 1, 1); addBBands(2)
}

Réponses:

1 pour la réponse № 1

Semble remplacer les lignes chartSeries, avec cette ligne fonctionnera:

chartSeries(myxts1, TA="addRSI();addMACD();addBBands()")

1 pour la réponse № 2

Au départ, je pensais que votre exemple fonctionnait bien en dehors de RStudio, mais j’ai remarqué le addMACD résultat n'a pas été ajouté.

library(quantmod)
data(sample_matrix)
x <- as.xts(sample_matrix)
if (TRUE) {
chartSeries(x)
addRSI()
addMACD()
addBBands()
}

Non enveloppé dans l'intrigue ()

Ensuite, je me suis souvenu que cela peut parfois arriver lorsque vous utilisez chartSeries ou chart_Series autre part que le niveau supérieur (par exemple, dans une fonction, une boucle for, etc.). La solution est l'envelopper la add* appelle dans plot.

if (TRUE) {
chartSeries(x)
plot(addRSI())
plot(addMACD())
plot(addBBands())
}

Enveloppé dans la parcelle ()