Quantstrat 使用我的线性回归曲线函数抛出错误

问题描述

当我运行下面的代码时出现以下错误。 “如果 (inherits(sret$indicators,"xts") & nrow(mktdata) == nrow(sret$indicators)) { 中的错误: 参数的长度为零”。我的猜测是我的线性回归曲线 (LRC) 函数中缺少某些内容。请帮忙。

# rm(list = ls(all = TRUE))
library(timeSeries)
library(timeDate)
library(tseries)
library(PerformanceAnalytics)
library(quantmod)
library(xts)
library(blotter)
library(TTR)
library(quantstrat)
library(FinancialInstrument)
library(reshape2)
library(ggplot2)
library(alphavantager)
library(dplyr)

startDate = "2001-01-01"

LRC <- function(x,n) {
  price <- Cl(x)
  m <- 1:n;
  y <- ts(coredata(price))[,1] 
  ab = rollapply(y,n,function(yt){coef(lm(yt~m))},align = "right")                                                                                                                    
  z <- ab[,2]*m[n]+ab[,1]
  price <- price[n:length(price)]
  z <- xts(unclass(z),order.by = as.Date(index(price)))
  colnames(z) <-"LRC"
  return(z)
}


symbols <- c("SPY","GLD")

getSymbols(symbols,src="av",api.key="P3KV99S52NH4N3YZ",output.size="full",periodicity="daily",from = startDate,adjusted=FALSE,auto.assign = TRUE)

initDate <- startDate
initEq <- 100000
tradeSize <- initEq/length(symbols)
currency("USD")
stock(symbols,currency="USD",multiplier=1)


myTheme<-chart_theme() 
myTheme$col$dn.col<- 'lightblue'  
myTheme$col$dn.border <-  'lightgray'  
myTheme$col$up.border <-  'lightgray' 


if(exists('.strategy')) rm.strat(qs.strategy) 
if(!exists('.blotter')) .blotter <- new.env()
if(!exists('.strategy')) .strategy <- new.env()

qs.strategy <- "AD26"
initPortf(qs.strategy,symbols,initDate=initDate)
initAcct(qs.strategy,portfolios=qs.strategy,initDate=initDate,initEq=initEq)
initOrders(portfolio=qs.strategy,initDate=initDate)
strategy(qs.strategy,store=TRUE)


add.indicator(strategy = qs.strategy,name = "LRC",arguments = list(x = quote(OHLC(mktdata)),n=21),label="LR21")

add.indicator(strategy = qs.strategy,n=5),label="LR5")


summary(getStrategy(qs.strategy))

#############################################################################################################


add.signal(qs.strategy,name="sigCrossover",arguments=list(columns=c("LR5","LR21"),relationship="gte"),label="Buy")

add.signal(qs.strategy,relationship="lt"),label="Sell")


summary(getStrategy(qs.strategy))

##############################################################################################################

add.rule(qs.strategy,name='ruleSignal',arguments = list(sigcol="Buy",sigval=TRUE,prefer ="open",replace = FALSE,orderqty = 100,ordertype='market',orderside = 'long'
                          
                          
         ),type='enter',label = 'LE'
)



add.rule(qs.strategy,arguments = list(sigcol="Sell",replace = TRUE,prefer ="Close",orderqty="all",orderside='long'
                          
                          
         ),type='exit',parent = "LE",label = "ProfitTake",enable = TRUE
)

summary(getStrategy(qs.strategy))

applyStrategy(strategy=qs.strategy,portfolios=qs.strategy)

sessionInfo() 返回以下内容:

R version 4.0.4 (2021-02-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.2 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] dplyr_1.0.4                alphavantager_0.1.2        highfrequency_0.8.0.1      anytime_0.3.9              forecast_8.13              jsonlite_1.7.2            
 [7] tidyquant_1.0.2            lubridate_1.7.9.2          riingo_0.3.1               pracma_2.3.3               urca_1.3-0                 Quandl_2.10.0             
[13] reshape2_1.4.4             Hmisc_4.4-2                ggplot2_3.3.3              Formula_1.2-4              survival_3.2-7             quantstrat_0.16.8         
[19] foreach_1.5.1              blotter_0.15.0             FinancialInstrument_1.3.1  quantmod_0.4.18            TTR_0.24.2                 PerformanceAnalytics_2.0.4
[25] xts_0.12.1                 zoo_1.8-8                  tseries_0.10-48            timeSeries_3062.100        timeDate_3043.102          lattice_0.20-41

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)