如何使用quantmod在新图中叠加多个TA?

时间:2016-06-16 04:56:41

标签: r quantmod

我们可以使用图表系列函数chartSeries(Cl(PSEC))绘制蜡烛图表我创建了一些自定义值( I1 I2 I3 )我想在蜡烛棒图案之外一起绘制(覆盖)。我为此目的使用了addTA()

chartSeries(Cl(PSEC)), TA="addTA(I1,col=2);addTA(I2,col=3);addTA(I3,col=4)")

问题在于它分别绘制了 Cl(PSEC),I1,I2 I3 的四个图,而不是我想要的两个图 Cl(PSEC) )(I1,I2,I3)

EDITED

为清楚起见,我给出了为此目的创建的I1,I2和I3变量的示例代码

library(quantmod)
PSEC=getSymbols("PSEC",auto.assign=F)
price=Cl(PSEC)
I1=SMA(price,3)
I2=SMA(price,10)
I3=SMA(price,15)
chartSeries(price, TA="addTA(I1,col=2);addTA(I2,col=3);addTA(I3,col=4)")

3 个答案:

答案 0 :(得分:3)

这是一个主要保留原始代码的选项。 在第一个TA之后,您可以使用选项on=2获取所需结果:

library(quantmod)
getSymbols("PSEC")
price <- Cl(PSEC)
I1 <- SMA(price,3)
I2 <- SMA(price,10)
I3 <- SMA(price,15)
chartSeries(price, TA=list("addTA(I1, col=2)", "addTA(I2, col=4, on=2)",
                           "addTA(I3, col=5, on=2)"), subset = "last 6 months")

enter image description here

如果您想在一个图表中叠加价格和SMA,可以为每个TA使用选项on=1

感谢@hvollmeier,他让我意识到他在我的答案的前一版本中误解了你的答案。

PS:请注意?addSMA()中描述了几个选项,包括with.col,可用于选择时间序列的特定列(Cl是默认列)。

答案 1 :(得分:2)

如果我理解正确,您需要SUBPLOT中的3个SMA而不是主图表窗口。您可以使用newTA执行以下操作。 使用您的数据:

PSEC=getSymbols("PSEC",auto.assign=F)
price=Cl(PSEC)

现在在主窗口下方的窗口中绘制一个10,30,50天的SMA:

chartSeries(price['2016'])
newSMA <- newTA(SMA, Cl, on=NA)
newSMA(10)
newSMA(30,on=2)
newSMA(50,on=2)

关键是参数on。使用on = NA定义新的TA功能,因为on的默认值为1,即主窗口。 on = NA在新窗口中绘制。然后将剩余的SMA绘制到与第一个SMA相同的窗口。根据自己的喜好设计颜色等等: - )。

enter image description here

答案 2 :(得分:2)

您可能需要考虑使用quantmod包中的较新的quantmod图(chart_Series而不是chartSeries)进行绘图来解决此任务。

优点: - 情节看起来更清洁,更好(?) - 通过将parsthemes选项编辑为chart_Series,可以获得更大的灵活性(有关pars和{{1}可以执行的操作的基础知识,请参阅此处的其他示例}}) 缺点: 没有详细记录。

themes

enter image description here