2015-02-15 7 views
1

Я пытаюсь реализовать программу для скользящей средней правило, от Gekko Quant - http://gekkoquant.com/2012/08/29/parameter-optimisation-backtesting-part-2/Программа Moving Average из Гекко Quant

Однако я получаю ту же ошибку - Ошибка: неожиданный «}» в «}»

Я немного изменил код в соответствии с моими данными и следующим образом;

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) 
} 

Мои данные находятся в dataframe "ES" в столбце "Close". Вот некоторые примеры данных;

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

Следующие две строки неправы 'mavga <- SMA (ES $ Close), 1 = mavga_period); mavgb <- SMA (ES $ Close), 5 = mavgb_period) '. – sgibb

+0

Спасибо, но что не так с двумя строками? Период скользящей средней для mavga_period равен 1, а период скользящей средней для периода mavgb_period равен 5. – aur

+0

С номером скобки что-то не так. – sgibb

ответ

1

Вместо того, чтобы смотреть на последнюю ошибку, вы должны смотреть на первую ошибке, фиксируя его и переходить к следующей первой ошибке:

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

Вы закончили вызов функции SMA с первая закрывающая пара:

Следующая строка имеет ту же синтаксическую ошибку. Если вы их вытащите, вы обнаружите семантическую ошибку при попытке присвоить номер 1. Я догадывался, что оригиналом было письмо "l", а используемый шрифт не делал этого понятным. Но, глядя на оригинал вы не точно копируя показывает действительный код:

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

Спасибо за ваши комментарии. Я понимаю SMA и ошибку из-за закрытых круглых скобок. Я скопировал код, но просто изменил данные, которые у них есть на мои данные (кадр данных ES с закрытием столбца), и хотел, чтобы два скользящих средних составляли 1 и 5. Это не то, для чего предназначена следующая строка кода; #Calculate скользящие средние mavga <- SMA (Op (mktdata), п = mavga_period) mavgb <- SMA (Op (mktdata), п = mavgb_period) ли п не просто изменить, потому что manga_period означает период скользящей средней a и mavgb_period означает период скользящей средней b? – aur

+0

Спасибо за ваши комментарии. Я понимаю SMA и ошибку из-за закрытых круглых скобок. Я скопировал код, но просто изменил данные, которые у них есть на мои данные (кадр данных ES с закрытием столбца), и хотел, чтобы два скользящих средних составляли 1 и 5. Это не то, для чего предназначена следующая строка кода; #Calculate скользящие средние mavga <- SMA (Op (mktdata), п = mavga_period) mavgb <- SMA (Op (mktdata), п = mavgb_period) ли п не просто изменить, потому что manga_period означает период скользящей средней a и mavgb_period означает период скользящей средней b? – aur

+0

Назначение с помощью оператора «=» всегда «символ = значение». И '1' не может быть символом. Я понятия не имею, что «н» стоял. Я знаю только, что вы не можете присвоить новое значение числу '1'. Я назвал семантическую ошибку, но это тоже синтаксическая ошибка. –