我目前正在尝试在R
中使用布林带编写一种简单的策略。我们的目标是在收盘价触及下限时进入多头头寸,并在触及上限时退出。为此,我首先编写了两个简单的函数用作指标:
BBandsDown <- function(HLC,n=20,maType,sd=2){
bbdown <- BBands(HLC,n,maType,sd)$dn
colnames(bbdown)<-"bbdown"
return(bbdown)
}
BBandsUp <- function(HLC,n=20,maType,sd=2){
bbup <- BBands(HLC,n,maType,sd)$up
colnames(bbup)<-"bbup"
return(bbup)
}
然后我添加了指标
add.indicator(strategy = strategy.st,
name = 'Cl',
arguments = list(x=quote(mktdata)),
label = 'close')
add.indicator(strategy = strategy.st,
name = 'BBandsDown',
arguments = list(HLC = quote(Cl(mktdata)), n=10,maType="SMA",sd=1.5),
label = 'bbandsdown1.5')
add.indicator(strategy = strategy.st,
name = 'BBandsUp',
arguments = list(HLC = quote(Cl(mktdata)), n=10,maType="SMA",sd=1.5),
label = 'bbandsup1.5')
然后我定义信号和规则。我的问题是我无法使用applyStrategy
命令,因为它会回复。
Error in BBands(HLC, n, maType, sd) (from strategy_bbands.r!15334IYx#2) :
Price series must be either High-Low-Close, or Close/univariate.
我尝试同时使用HLC = quote(Cl(mktdata))
和HLC = quote(HLC(mktdata))
,但是错误是相同的。我在做什么错了?
答案 0 :(得分:0)
您尚未提供可复制的示例。
错误很明显是您传递了错误的数据。
我怀疑您在调用applyStrategy
之前已经对数据进行了处理,但是这里没有足够的数据来验证这一点。
有关示例,请参阅demos目录中的bbands.R
演示。