首页 > 解决方案 > R中的布林带指标

问题描述

我目前正在尝试使用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))但错误是一样的。我究竟做错了什么?

标签: rquantstrat

解决方案


您没有提供可重现的示例。

错误很明显,您传入了错误的数据。

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

有关工作示例,请参见bbands.Rdemos 目录中的演示。


推荐阅读