我有以下代码。我想输入有效的股票代码并渲染烛台图。我想让用户可以选择在图表上的20天,50天和200天的简单移动平均线之间进行切换。但是,当我运行该应用程序时,mainPanel返回:
Error: chartSeries requires an xtsible object.
这是我的第一个Shiny App开发项目,我不知道为什么它不起作用。
library(shiny)
library(quantmod)
library(lubridate)
shinyUI(fluidPage(
titlePanel("Candlestick Stock Charts"),
sidebarLayout(
sidebarPanel(
textInput("symb", "Input a Valid Stock Symbol", "AAPL"),
radioButtons("radioMoveAvg",
"Moving Averages",
c("20-day" = "twentyAvg",
"50-day" = "fiftyAvg",
"200-day" = "twohundAvg"))
),
mainPanel(
plotOutput("candleStick")
)
)
))
library(shiny)
library(quantmod)
library(lubridate)
shinyServer(function(input, output) {
cs<-reactive({
getSymbols(input$symb,
src = "yahoo",
from = Sys.Date()-years(2),
to = Sys.Date(),
auto.assign = FALSE)[, 4]
})
moveAvg<-reactive({
if(input$radioMoveAvg=="twentyAvg"){
x = 20
col = "blue"
}
if(input$radioMoveAvg=="fiftyAvg"){
x = 50
col = "green"
}
if(input$radioMoveAvg=="twohundAvg"){
x = 200
col = "pink"
}
})
output$candleStick <- renderPlot({
candleChart(cs, up.col = "black", dn.col = "red", theme = "white", subset = "2019-01-01/")
addSMA(moveAvg)
})
})
答案 0 :(得分:0)
在我的代码中发现错误。删除了lubridate软件包,因为在getSymbols函数中不需要它。将addSMA函数移至moveAvg反应式语句中。正如我在开始该项目时所想象的那样,代码正在工作。