当 chartSeries 使用相同的数据集进行绘图时,为啥 addBBands() 函数会出错?
Posted
技术标签:
【中文标题】当 chartSeries 使用相同的数据集进行绘图时,为啥 addBBands() 函数会出错?【英文标题】:Why does the addBBands() function error when the chartSeries plots using the same dataset?当 chartSeries 使用相同的数据集进行绘图时,为什么 addBBands() 函数会出错? 【发布时间】:2019-06-12 22:09:48 【问题描述】:使用 getSymbols 函数检索 OHLC 数据后,我将向 OHLC 数据添加一列。我可以使用 chartSeries 函数绘制图表,但是当我尝试使用 addBBands() 函数添加布林带时,出现错误。
从 OHLC 数据中删除多余的列时,addBBands() 函数可以正常工作。我不清楚它是否应该以这种方式工作,或者这是一个设计缺陷。
library (quantmod)
getSymbols("AAPL")
AAPL <- cbind(AAPL,AAPL[,4])
chartSeries(AAPL["2018"])
addBBands()
图表绘制,我希望 addBBands() 函数绘制布林带,但我得到错误,“价格序列必须是高-低-收盘,或收盘/单变量。”
【问题讨论】:
【参考方案1】:这是设计使然。 BBands
检查列的名称。检查基于列名称。在您的示例中,您有 2 列包含单词 Close。这就是它出错的地方。如果您将新列命名为除 high、low、open、close、volume 之外的任何名称,它将起作用。如下所示。
library (quantmod)
getSymbols("AAPL")
AAPL <- cbind(AAPL,AAPL[,4])
# rename last column so it doesn't have "close" in the column name
names(AAPL)[7] <- "AAPL.New.Col"
chartSeries(AAPL["2018"])
addBBands()
【讨论】:
我确实按照您的建议重命名了最后一列并继续收到错误。 检查名称(AAPL)的结果并查看返回的内容。它应该适用于示例。但仅限于干净的 R 环境中。 这是名称结果。我还在运行它之前擦除了环境并继续得到同样的错误。 AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted AAPL.New.Col 应该可以正常工作。我对此没有任何问题。您是否重新启动了 R 会话? 终于搞定了...列名更改需要在chartSeries()之前进行。感谢您的帮助。以上是关于当 chartSeries 使用相同的数据集进行绘图时,为啥 addBBands() 函数会出错?的主要内容,如果未能解决你的问题,请参考以下文章