#r #menu #rstudio #xts #quantmod
#r #меню #rstudio #xts #quantmod
Вопрос:
Я готовлю меню, которое связано с созданием графика, где источником является объект xts и 3 индикатора TTR. Кажется, что «оператор if», который находится вокруг строки chartSeries, делает видимыми не все индикаторы. В настоящее время даже при изменении порядка индикаторов результат показывает только индикатор в самом конце строки серии графиков.
Ниже вы видите мой код, который я запускаю в 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)
}
Ответ №1:
Кажется, замена строк chartSeries с этой строкой будет работать:
chartSeries(myxts1, TA="addRSI();addMACD();addBBands()")
Ответ №2:
Сначала я думал, что ваш пример отлично работает вне RStudio, но потом я заметил addMACD
, что результат не добавляется.
library(quantmod)
data(sample_matrix)
x <- as.xts(sample_matrix)
if (TRUE) {
chartSeries(x)
addRSI()
addMACD()
addBBands()
}
Затем я вспомнил, что иногда это может произойти, когда вы используете chartSeries
or chart_Series
где-то, кроме верхнего уровня (например, В функции, цикле for и т. Д.). Решение заключается в переносе add*
вызовов plot
.
if (TRUE) {
chartSeries(x)
plot(addRSI())
plot(addMACD())
plot(addBBands())
}