如何从 quantmod 上的所有数据添加一个简单的移动平均线并对图表进行子集化?

How to add a simple moving average from all data on quantmod and subset the chart?

我有来自 SPY 的数据我想添加一个 200 的简单移动平均线,问题是我只想绘制一个特定的时间范围,但我希望移动平均线考虑所有数据以便我可以看到它。就像 tradingview 上的常规图表一样,当您绘制数据时,您会看到所有数据的移动平均线,但您可以看到它在特定时间长度内的表现。此代码不起作用,因为我对数据进行了子集化并且我没有计算指标的所有值范围。

library(quantmod)
getSymbols("SPY", from="2016-01-01", to="2020-01-01")
chartSeries(SPY, subset = "2017-11-18::2017-12-16")
addSMA(n=200, on=1, col = "blue")

我想绘制从 2017-11-18 到 201712-16 的数据,但我希望移动平均线采用所有可用数据的值。

您可以毫无问题地添加 SMA,但您看不到它的原因是它超出了 SPY 数据显示的 y 范围。

如果您手动设置 y 范围,您会看到它。

chartSeries(SPY, subset = "2017-11-18::2017-12-16", yrange = c(240, 280))
addSMA(n=200, on=1, col = "blue")

但最好使用 chart_Series 函数。然后添加 SMA 将自动移动 y 范围以包括 SMA。

chart_Series(SPY, subset = "2017-11-18::2017-12-16")
add_SMA(n=200, on=1, col = "blue")

chart_Series 函数的唯一缺点是它们没有很好的文档记录。但是有很多关于他们的信息。