Gekko Quant的移动平均线计划

时间:2015-02-15 16:16:51

标签: r moving-average

我正在尝试从Gekko Quant实施移动平均规则的程序 - http://gekkoquant.com/2012/08/29/parameter-optimisation-backtesting-part-2/

但是我一直收到同样的错误 - 错误:意外'}'在"}"

我稍微修改了代码以匹配我的数据,如下所示;

TradingStrategy <- function(mktdata,mavga_period,mavgb_period){

runName <- paste("MAVGa",mavga_period,".b",mavgb_period,sep="")
print(paste("Running Strategy: ",runName))

returns <- diff(log(ES$Close))

mavga <- SMA(ES$Close),1=mavga_period)
mavgb <- SMA(ES$Close),5=mavgb_period)

signal <- mavga / mavgb

signal <- apply(signal,1,function (x) { if(is.na(x)){ return (0) } else { if(x>1){return (1)} else {return (-1)}}})

tradingreturns <- signal * returns
colnames(tradingreturns) <- runName

return (tradingreturns)
}

我的数据位于数据框中&#34; ES&#34;在列&#34;关闭&#34;。一些示例数据将是;

50
51
52
59
54
49
50
50
40
45
46
50
51
52
59
54
49
50
50
40
45
46

1 个答案:

答案 0 :(得分:1)

您应该查看第一个错误,修复它并转到下一个第一个错误,而不是查看上一个错误:

 mavga <- SMA(ES$Close),1=mavga_period)
Error: unexpected ',' in:

您使用第一个结束时完成了对SMA的函数调用:

  mavga <- SMA(ES$Close),1=mavga_period)
                    here^    

下一行有同样的语法错误。如果将它们取出,则在尝试将某些内容分配给数字1时会出现语义错误。我猜测原件是"l"字母而且使用的字体没有说清楚。但是看看原文,你并没有忠实地复制显示有效的代码:

 #Calculate the moving averages
  mavga <- SMA(Op(mktdata),n=mavga_period)
  mavgb <- SMA(Op(mktdata),n=mavgb_period)