繁体   English   中英

如何使用quantmod在chartSeries图上画一条线?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM