R

时间:2018-07-04 08:56:25

标签: r quantstrat

我目前正在尝试在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)),但是错误是相同的。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您尚未提供可复制的示例。

错误很明显是您传递了错误的数据。

我怀疑您在调用applyStrategy之前已经对数据进行了处理,但是这里没有足够的数据来验证这一点。

有关示例,请参阅demos目录中的bbands.R演示。