如何向Shiny,Rquantmod问题添加自定义指标

问题描述 投票:0回答:1

我是新手,尝试将自定义指标添加到Shiny / Rquantmod应用。

R脚本中的以下代码效果很好。

library(quantmod)
getSymbols('SBUX')
barChart(SBUX)
# create new TA function
myInd <- function(x) {
  return(WMA(Cl(x)))
}
addMyInd <- newTA(FUN = myInd)
addMyInd()

相当于闪亮

library(shiny)
library(quantmod)

myInd <- function(x) {
  return(WMA(Cl(x)))
}
addMyInd <- newTA(FUN = myInd)

shinyServer(function(input, output,session) {
observe({
  query <- parseQueryString(session$clientData$url_search)
  dataInput <- reactive({ as.xts(getSymbols('SBUX', auto.assign = FALSE)) })
  output$chart <- renderPlot({ chartSeries(dataInput(), name = 'SBUX', TA = c(addMyInd()) ) })  
 })
})

发生错误,失败:找不到函数“ myInd”。

而用任何内置函数替换“ addMyInd”都很好。

output$chart <- renderPlot({ chartSeries(dataInput(), name = 'SBUX', TA = c(addWMA()) )

任何想法如何使Shiny找到“ myInd”功能?

r shiny quantmod shinyapps technical-indicator
1个回答
0
投票

我无法真正尝试它是否有效,但是根据我的Shiny应用程序,您可以尝试a)使它具有反应性:

myInd <- function(x) {
  reactive(return(WMA(Cl(x))))
}

和b)将其放入服务器调用中:

shinyServer(function(input, output,session) {

  myInd <- function(x) {
    reactive(return(WMA(Cl(x))))
  }
  addMyInd <- newTA(FUN = myInd)

  observe({
    query <- parseQueryString(session$clientData$url_search)
    dataInput <- reactive({ as.xts(getSymbols('SBUX', auto.assign = FALSE)) })
    output$chart <- renderPlot({ chartSeries(dataInput(), name = 'SBUX', TA = c(addMyInd()) ) })  
  })
})
© www.soinside.com 2019 - 2024. All rights reserved.