我正在使用一些指标构建基本交易策略。我的问题是我希望它在多个股票上运行,而不必指定我想要测试的每个单独的股票。
目前我可以使用向量一次获取多个符号,如下所示
# Get Shares from Yahoo Finance
Stocks<- ASX_200_Companies_Copy$Code
getSymbols(Stocks, from = from, to = to, src = "yahoo", adjust = TRUE)
Run Code Online (Sandbox Code Playgroud)
我可以轻松地在 Excel 文档中生成包含股票代码列表的向量。所以这将为我生成 200 个单独的符号。生成所有指标后,我将针对单个资产创建如下测试策略
# Test the strategy
test_Master <- applyIndicators(strategy.st.Master, mktdata = OHLC(BHP.AX))
Master_Strategy <- applySignals(strategy = strategy.st.Master, mktdata = test_Master)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我一次只能测试一项资产的策略,如果我想在大型数据集中找到趋势,这将不会有效。
指定股票作为 OHLC 的参数会产生以下错误
test_Master <- applyIndicators(strategy.st.Master, mktdata = OHLC(Stocks))
Error in Cl(mktdata) : subscript out of bounds: no column name containing "Close"
Run Code Online (Sandbox Code Playgroud)
我想简单地绑定一些生成的单独股票。然而这也不起作用。
Stocks <- cbind(BHP.AX, CBA.AX)
test_Master <- applyIndicators(strategy.st.Master, mktdata = OHLC(Stocks))
Error in runSum(x, n) : ncol(x) > 1. runSum only supports univariate 'x'
Run Code Online (Sandbox Code Playgroud)
即使我成功地绑定了每个交易品种,我想该策略也会针对股票向量中的每个交易品种测试 OHLC 上的指标。
有没有办法同时测试多种资产的量化策略?
任何想法/反馈将不胜感激。
quantstrat默认情况下会执行您所要求的操作。
这是一个例子:
data(stratBBands) #load a test strategy, you'd use your own
symbols = c("XLF", "XLP", "XLE", "XLY", "XLV",
"XLI", "XLB", "XLK", "XLU")
getSymbols(symbols
, src='yahoo'
, index.class=c("POSIXt"
,"POSIXct")
, from='1999-01-01')
out<-try(applyStrategy(strategy=stratBBands
, portfolios='bbands'
, parameters=list(sd=2,n=60)) )
Run Code Online (Sandbox Code Playgroud)
或者您可以查看 中包含的许多示例中的几乎任何一个quantstrat,因为几乎所有示例都使用多个符号。