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 № 1Semble 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()
}
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())
}