Я очень новичок в R и пытаюсь воспроизвести стратегию, которую я запрограммировал уже в WealthLab.R: Протестируйте торговую стратегию. Начинающие к квантовому моменту и R
Несколько вещей я не понимаю (и это не работает, очевидно :)
Я не получить Закрыть Цены приятно в векторе ... или какой-то вектор, но это начинается со структуры, и я действительно не понимаю, что делает эта функция. Вот почему моя серия [, 1], вероятно, не работает.
< п - nrow (серия) не работает, либо, но мне нужно, что для Loop
Так что я думаю, если я получаю эти 2 вопросы моя стратегия должна работать ... Я «м очень благодарен за любой help..R кажется довольно сложным, даже с опытом программирования на других языках
#rm(list = ls(all = TRUE))
#import data, default is yahoo
require(quantmod)
series <- getSymbols('AAPL',from='2013-01-01')
#generate HLOC series
close <- Cl(AAPL)
open <- Op(AAPL)
low <-Lo(AAPL)
high <- Hi(AAPL)
#setting parameters
lookback <- 24 #24 days ago
startMoney <- 10000
#Empty our time series for position and returns
f <- function(x) 0 * x
position <- apply(series[,1],FUN=f)
colnames(position)="long_short"
returns <- apply(series[,1],FUN=f)
colnames(returns)="Returns"
trades = returns
colnames(trades)="Trades"
amount = returns
colnames(amount) = "DollarAmount"
amt[seq(1,lookback)] = startMoney
#Calculate all the necessary values in a loop with our trading strategy
n <- nrow(series)
for(i in seq(lookback+1,n)){
#get the return
if(position[i-1] == 1){
#we were long
returns[i] = close[i]/close[i-1] - 1
} else if(position[i-1] == -1){
#we were short
returns[i] = close[i-1]/close[i] - 1
}
#long/short position
if(open[i-lookback]<open[i] && low[i-1] < open[i]){
#go long
position[i] = 1
} else if(open[i-lookback]>open[i] && high[i-1] > open[i]){
# go short
position[i] = -1
} else {
position[i] = position[i-1]
}
#mark a trade if we did one
if(position[i] != position[i-1]) trades[i] = 1
#Calculate the dollar amount
amount[i] = amount[i-1]*exp(returns[i])
if(trades[i]) amount[i] = amount[i] - 2
}
Просьба [воспроизводимый пример] (HTTP: // stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). 'position <- apply (series [, 1], FUN = f)' приводит к ошибке. –
да Я вроде скопировал некоторые строки кода из этого урока и не очень понимаю эту строку. Я имею в виду ряд [, 1], который, как я думал, применил бы функцию f к «столбцу» 1 серии. Но так как эта серия является некоторым дополнением со структурой и т. Д., Это не сработает. Я говорю об этом учебнике: http://www.r-bloggers.com/backtesting-a-trading-strategy/ – MichiZH
'fapply'! =' Apply'. Это разные функции, с разными аргументами и различным поведением. –