Sono molto nuovo a R e sto provando a testare una strategia che ho già programmato in WealthLab.R: Backtesting una strategia di trading. Principianti di Quantmod e R
Diversi cose che non capisco (e non funziona, ovviamente :)
Non capisco le Tariffe piacevolmente in un vettore ... o qualche tipo di vettore, ma inizia con la struttura e non capisco veramente cosa fa questa funzione. Ecco perché la mia serie [, 1] chiamata probabilmente non funziona.
n < - nrow (serie) non funziona neanche, ma ho bisogno che per il Loop
Quindi credo che se ottengo queste 2 domande hanno risposto alla mia strategia dovrebbe funzionare ... I 'm molto grato per qualsiasi help..R sembra piuttosto complicato anche con esperienza di programmazione in altre lingue
#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
}
prega di fornire un [esempio riproducibile] (http: // stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). 'position <- apply (series [, 1], FUN = f)' produce un errore. –
Sì, ho copiato alcune righe di codice da questo tutorial e non capisco questa riga. Intendo serie [, 1] ho pensato applicasse la funzione f alla "colonna" 1 della serie. Ma dal momento che questa serie è un po 'complicata con la struttura ecc. Non funziona. Sto parlando di questo tutorial: http://www.r-bloggers.com/backtesting-a-trading-strategy/ – MichiZH
'fapply'! =' Apply'. Sono funzioni diverse, con argomenti diversi e comportamenti diversi. –