[英]How to draw a line on chartSeries plot using quantmod?
我想使用quantmod产生一个像这样的图https://stat.ethz.ch/pipermail/r-sig-finance/attachments/20110826/19da3834/attachment.png
我猜我对一个非常简单的任务感到沮丧。 我希望能够使用quantmod在图表上画一条线。 经过几天的尝试,我一无所获。 我看不到有关如何使用quantmod :: addLines函数执行此操作的示例(这是我发现的唯一类似问题,但找不到答案http://r.789695.n4.nabble.com/quantmod- plot-trendline-td894632.html )
我的问题是:我想在指定的日期/时间/条形图y值处绘制一条水平线。 这行仅允许从某些特定的竖线开始长n(例如5个)竖线(此外,我也想在指定的y值的行上方添加文本)。
我尝试了几件事:
getSymbols("SPY")
lines.SPY <- (Hi(SPY) + Lo(SPY))/2
names(lines.SPY) <- c("lines")
lines.SPY$BuySell <- ifelse(lag(lines.SPY$lines) > lines.SPY$lines, 1, -1)
chartSeries(SPY, subset="2011-08::", theme=chartTheme('white',
up.col='blue', dn.col='red'))
addTA(lines.SPY$lines[lines.SPY$BuySell == -1,], type='p', col='darkred', pch="_", on=1, cex = 2.5)
addTA(lines.SPY$lines[lines.SPY$BuySell == 1,], type='p', col='green4', pch="_", on=1, cex = 2.5)
但这实际上不是线...而且我不知道该添加文字...
然后我尝试了这个
getSymbols("SPY")
subset = "2011-03::"
dev.new()
chartSeries(SPY, subset=subset, theme="white")
test <- xts(rep(coredata(last(Cl(SPY))), 20), order.by=index(last(SPY, n=20)))
addTA(test, on=1, col="red", legend=NULL, lwd=3)
同样,无法添加文本。 这种方法的另一个问题是,我无法摆脱顶部的图例。 由于我想在一张图表图例上绘制数十或数百条线,因此不应显示...
预先感谢您的想法/代码示例/ ...
最好的问候,萨摩。
(我只是复制了Stergios Marinopoulos的R-sig-finance的答案)使用新的chart_Series()函数以及文本和句段。
require(quantmod)
getSymbols("SPY")
chart_Series(SPY, subset="2011-08::", type = "candlesticks" )
text(9, 112.00, "SOME TEXT", adj=0);
segments(9, 111.5, 12, 111.5) ;
我的一些补充评论。 要添加一条消息: text(x,y,"message")
其中x是条形的编号(最左边的条形为1;您可以使用0或负数来绘制左侧),而y是其中的值图表。 对于调整,0表示左对齐,1表示右对齐,0.5表示居中。 超出0..1范围会相应地移动它(但依靠它可能是不明智的)。
segment(x1,y1,x2,y2)绘制一条从(x1,y1)到(x2,y2)的线,其中x再次是条形索引,y是价格。
以下内容绘制了一个等腰三角形,用20%不透明的红色绘制:多边形(c(20,30,40),c(5290,5320,5290),col =“#ff000033”)
即所有的R图形功能都可用; 但是您必须使用chart_Series()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.