Ошибка блестящей биржевой диаграммы: для chartSeries требуется объект xtsible - PullRequest
0 голосов
/ 21 мая 2019

У меня есть следующий код.Я хочу взять на вход действительный символ акций и визуализировать график свечи.Я хочу дать пользователю возможность переключаться между 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)
    })
})

1 Ответ

0 голосов
/ 22 мая 2019

Нашли ошибки в моем коде.Удалил пакет lubridate, потому что он не был нужен в функции getSymbols.Переместил функцию addSMA в реактивный оператор moveAvg.Код работает так, как я изобразил, когда начинал проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...