R量化交易

R Quant Trading

我需要一些帮助才能让我的代码正常工作。我正在尝试根据高于 MACD、布林带和慢速随机指标的收盘价创建一个简单的头寸信号。我从第 17 行开始收到错误。我不确定这是不是因为 "Stock" 是一个 xts 对象。最后我也想绘制输出图。谢谢!

#install.packages("quantmod")
library("quantmod")
#install.packages("FinancialInstrument")
library("FinancialInstrument")
#install.packages("PerformanceAnalytics")
library("PerformanceAnalytics")
#install.packages("TTR")
library("TTR")

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

Stock <- get(getSymbols('CAT'))["2014::"]

# add the indicators
Stock$BBands <- BBands(HLC(Stock))
Stock$MACD <- MACD(HLC(Stock))
Stock$stochOSC <- stoch(Stock[,c("High","Low","Close")])
Stock$position <- ifelse(Cl(Stock) > Stock$BBands > Stock$MACD > Stock   $stockOSC , 1 , -1)

Gains <- lag(Stock$position) * dailyReturn(Stock)
charts.PerformanceSummary(cbind(dailyReturn(Stock),Gains))

正如 Pascal 在他上面的评论中提到的,MACD 使用单变量对象。该对象应该是收盘价(除非您想要其他东西),它是名为 CAT.CloseHLC(Stock) 中的第三列。 Stock$stochOSC 不起作用,因为列名指定错误(CAT. 应添加在 High、Low 和 Close 之前)。最后,& 应该分隔 ifelse 的多个条件(注意问题中 Stock$stochOSC 的拼写错误(ck 而不是 ch))。

代码如下:

#install.packages("quantmod")
library("quantmod")
#install.packages("FinancialInstrument")
library("FinancialInstrument")
#install.packages("PerformanceAnalytics")
library("PerformanceAnalytics")
#install.packages("TTR")
library("TTR")

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

Stock <- get(getSymbols('CAT'))["2014::"]

# add the indicators
Stock$BBands <- BBands(HLC(Stock))
Stock$MACD <- MACD(HLC(Stock)[,3])
Stock$stochOSC <- stoch(Stock[,c("CAT.High","CAT.Low","CAT.Close")])
Stock$position <- ifelse(Cl(Stock)>Stock$BBands & Stock$BBands >Stock$MACD & Stock$MACD > Stock$stochOSC , 1 , -1)

Gains <- lag(Stock$position) * dailyReturn(Stock)
charts.PerformanceSummary(cbind(dailyReturn(Stock),Gains))

你应该得到以下情节: