我正在尝试从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
答案 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)