Как добавить простую скользящую среднюю в несколько свечных графиков, используя квантовый режим - PullRequest
1 голос
/ 14 марта 2019

Я слежу за ценами нескольких акций.Благодаря Vincent Zoonekynd (https://stackoverflow.com/users/1129973/vincent-zoonekynd), я смог построить несколько графиков на странице. Теперь я хочу добавить по 20 и 200 дней по одной скользящей средней на каждый график, но график повторяется. Мой код

library(quantmod)
end <- Sys.Date()
start <- end - 365
stocks <- c("GOOG", "INTC", "AAPL")
stocksts <- list()
i <- 1
for(stock in stocks){
stocksts[[i]] <- getSymbols(stock
, src = "yahoo"
, from = start
, to = end
,auto.assign =  FALSE
, return.class = "xts")  
i <- i+1
}
par(mfcol=c(3,1), oma=c(1,1,0,0), mar=c(1,1,1,0), tcl=-0.1, mgp=c(0,0,0))
for (i in 1:length(stocksts)){
chartSeries(na.omit(scale(stocksts[[i]]))
,"candlesticks"
,name = names(df)
,TA = NULL 
, layout = NULL
, yrange = c(-3,3) 
)
addSMA(n = 20, col = "green")
addSMA(n = 200, col = "red")
}

Не могли бы вы посоветовать, как можно печатать графики свечей и SMA, избегая повторения?

1 Ответ

1 голос
/ 14 марта 2019

Я думаю, это то, что вы ищете, учитывая установленную вами структуру,

Я рекомендую вам взглянуть на https://stackoverflow.com/a/37873283/9555388,, это может помочь вам улучшить настройку ...

1: Настройка

library(quantmod)
end <- Sys.Date()
start <- end - 365
stocks <- c("GOOG", "INTC", "AAPL")
stocksts <- list()
i <- 1
for(stock in stocks){
  stocksts[[i]] <- getSymbols(stock
                              , src = "yahoo"
                              , from = start
                              , to = end
                              ,auto.assign =  FALSE
                              , return.class = "xts")  
  i <- i+1
}

2: Новый метод добавления SMA и построения графиков данных одновременно

par(mfcol=c(3,1), oma=c(1,1,0,0), mar=c(1,1,1,0), tcl=-0.1, mgp=c(0,0,0))
for (i in 1:length(stocksts)){
  price=Cl(stocksts[[i]])
  newSMA <- newTA(SMA, Cl, on=NA)
  print(chart_Series(price, TA = 'add_TA(SMA(price, 20), on = 1, col = "green"); add_TA(SMA(price, 200), on = 1, col = "red")', yrange = c(-3,3)))

}
...