当 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() 函数会出错?的主要内容,如果未能解决你的问题,请参考以下文章

使用训练阶段使用的完全相同的数据集进行交叉验证是不是很好?

使用 Crossfilter 和 D3 重绘直方图

MATLAB SVM:使用相同的数据集进行训练和测试会产生不同的结果

带有本地数据的剑道图表 - 重绘结束时触发事件

基于R语言的分类、聚类研究

android 动画基础绘——view 动画[补]