在Quantstrat中,可以通过使用add.indicator()函数将任意数量的布林带指标添加到策略中,从而创建多层布林带策略。以下是一个简单的示例代码,用于创建一个由两个布林带层级组成的策略:
library(quantstrat)
initDate <- '2000-01-01'
from <- '2010-01-01'
to <- '2015-12-31'
currency('USD')
symbols('AAPL', 'IBM')
stock('AAPL', 'USD', multiplier = 1)
stock('IBM', 'USD', multiplier = 1)
# 创建Bollinger Band指标
add.indicator(strategy = 'myStrategy', name = 'BBands', arguments = list(HLC = quote(Cl(mktdata)), n = 20, sd = 2), label = 'BBands_1')
add.indicator(strategy = 'myStrategy', name = 'BBands', arguments = list(HLC = quote(Cl(mktdata)), n = 10, sd = 1), label = 'BBands_2')
# 定义信号和规则
add.signal(strategy = 'myStrategy', name = 'sigCrossover', arguments = list(column = c('Close', 'BBands_1.dn'), relationship = 'gt'), label = 'long_entry')
add.signal(strategy = 'myStrategy', name = 'sigCrossover', arguments = list(column = c('Close', 'BBands_1.up'), relationship = 'lt'), label = 'long_exit')
add.signal(strategy = 'myStrategy', name = 'sigCrossover', arguments = list(column = c('Close', 'BBands_2.dn'), relationship = 'gt'), label = 'short_entry')
add.signal(strategy = 'myStrategy', name = 'sigCrossover', arguments = list(column = c('Close', 'BBands_2.up'), relationship = 'lt'), label = 'short_exit')
# 定义交易规则
add.rule(strategy = 'myStrategy', name = 'ruleSignal', arguments = list(sigcol = 'long_entry