如何解决在使用 quantmod 创建的 Shiny 图表中添加符号和标签
我想将 (a) 符号和 (b) 标签添加到在 Shiny 中使用 quantmod 创建的带有财务数据的图表中。我将描述哪些有效,哪些无效。
library(quantmod)
getSymbols("AAPL",from='2007-07-01',to='2009-09-01')
chartSeries(AAPL,subset='2007-05-01::2009-09-01',theme=chartTheme('white'))
MACD2plot_plus = which(diff(sign(MACD(Cl(AAPL))[,1])) > 0)
MACD2plot_minus = which(diff(sign(MACD(Cl(AAPL))[,1])) < 0)
range_y = 0.5
addPoints(MACD2plot_plus,AAPL[MACD2plot_plus,4] - range_y,pch=24,col='blue',offset=1.0)
addPoints(MACD2plot_minus,AAPL[MACD2plot_minus,4] + range_y,pch=25,col='red',offset=1.0)
addSMA(n=12,on=1,col = "blue")
addSMA(n=26,col = "red")
Shiny 中的相同内容,但不会产生相同的情节。 (部分基于 xtsible object,looping in quantmod)
library(shiny)
library(quantmod)
ui <- fluidPage(
textInput("tinput","Ticker",value = "AAPL"),br(),plotOutput("qm_plot")
)
server <- function(input,output,session) {
output$qm_plot <- renderPlot({
stocks = input$tinput
stockEnv <- new.env()
getSymbols(input$tinput,to='2009-09-01',env=stockEnv)
stock = ls(stockEnv)
chartSeries(stockEnv[[ls(stockEnv)]],name = input$tinput,theme=chartTheme('white'))
MACD2plot_plus = which(diff(sign(MACD(Cl(stockEnv[[stock]]))[,1])) > 0)
MACD2plot_minus = which(diff(sign(MACD(Cl(stockEnv[[stock]]))[,1])) < 0)
range_y = 0.5
addPoints(MACD2plot_plus,stockEnv[[stock]][MACD2plot_plus,offset=1.0)
addPoints(MACD2plot_minus,stockEnv[[stock]][MACD2plot_minus,offset=1.0)
addSMA(n=12,col = "blue")
addSMA(n=26,col = "red")
})
}
shinyApp(ui,server)
问题
谢谢
注意:addTA 没有添加积分的程序:https://rdrr.io/cran/quantmod/src/R/addTA.R
解决方法
这是问题 1 的答案:
将 addPoints
和 addSMA
函数包裹在 print
中以便反映在图表上。
library(shiny)
library(quantmod)
ui <- fluidPage(
textInput("tinput","Ticker",value = "AAPL"),br(),plotOutput("qm_plot")
)
server <- function(input,output,session) {
output$qm_plot <- renderPlot({
stocks = input$tinput
stockEnv <- new.env()
getSymbols(input$tinput,from='2007-07-01',to='2009-09-01',env=stockEnv)
stock = ls(stockEnv)
chartSeries(stockEnv[[ls(stockEnv)]],subset='2007-05-01::2009-09-01',name = input$tinput,theme=chartTheme('white'))
MACD2plot_plus = which(diff(sign(MACD(Cl(stockEnv[[stock]]))[,1])) > 0)
MACD2plot_minus = which(diff(sign(MACD(Cl(stockEnv[[stock]]))[,1])) < 0)
range_y = 0.5
print(addPoints(MACD2plot_plus,stockEnv[[stock]][MACD2plot_plus,4] - range_y,pch=24,col='blue',offset=1.0))
print(addPoints(MACD2plot_minus,stockEnv[[stock]][MACD2plot_minus,4] + range_y,pch=25,col='red',offset=1.0))
print(addSMA(n=12,on=1,col = "blue"))
print(addSMA(n=26,col = "red"))
})
}
shinyApp(ui,server)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。