I want to add vertical lines on several dates on a certain graph. So far I haven\'t managed to achieve this simple task. This is what I tried:
> s <-
add horizontal line my example:
library(quantmod)
library(lubridate)
stockId<-"CVS"
showperiod<-6 # 6 months
stockData<-getSymbols(stockId, src="yahoo",auto.assign=FALSE)
startDate<-Sys.Date()-months(showperiod,abbreviate = FALSE)
fromDate<-paste0(year(startDate),month(startDate))
subset<-paste0(fromDate,"/")
mytheme <- chart_theme()
mytheme$col$dn.col <- "firebrick1"
mytheme$col$up.col <- "darkgreen"
chart_Series(stockData, name = stockId, subset = subset, theme = mytheme)
#if you add line at 2018-6-18 to 2018-07-16 & y(price)=72
#you need creat new data to plot
#
ntick<-nrow(stockData["20180618/20180716"]) #2018-6-18 to 2018-07-16 tick numbers
getDate<-index(stockData["20180618/20180716"])
y<-rep(72,ntick)
df<-data.frame(getDate,y)
linedata<-xts(df$y,order.by = df$getDate)
# add line
add_TA(linedata,on=-1,col="blue",lwd=2)
enter image description here
You can't mix functions from the old and new versions of quantmod's charting functions. If you want to use addLines, you have to use chartSeries. Even if you use addLines and chartSeries, d1 should be an xts object, not a datetime object. For example:
library(quantmod)
data(sample_matrix)
s <- as.xts(sample_matrix)
chartSeries(s,TA="addLines(v=s[100])")

If you want to add a vertical line using chart_Series, create a logical xts object with TRUE values where you want the lines to appear and FALSE otherwise. For example:
l <- xts(!as.logical(s[,1]),index(s))
l[100] <- TRUE
chart_Series(s,TA="add_TA(l,on=1)")

Also note that you can put the vertical line "behind" the chart by using on=-1 in the add_TA call:
chart_Series(s,TA="add_TA(l,on=-1,col='grey',border='grey')")