Tôi rất mới để R và cố gắng để backtest một chiến lược tôi đã lập trình đã có trong WealthLab.R: Hoàn thiện chiến lược giao dịch. Người mới bắt đầu để quantmod và R
vài thứ mà tôi không hiểu (và nó không hoạt động rõ ràng :)
tôi không nhận được giá Đóng độc đáo vào một vector ... hoặc một số loại vector nhưng nó bắt đầu với cấu trúc và tôi không thực sự hiểu chức năng này làm gì. Đó là lý do tại sao chuỗi cuộc gọi [, 1] của tôi có thể không hoạt động.
n < - nrow (series) không làm việc một trong hai, nhưng tôi cần phải có cho Loop
Vì vậy, tôi đoán nếu tôi nhận được những câu hỏi đã trả lời 2 chiến lược của tôi nên làm việc ... Tôi đang rất biết ơn đối với bất kỳ help..R có vẻ khá phức tạp ngay cả với kinh nghiệm lập trình bằng ngôn ngữ khác
#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
}
Vui lòng cung cấp một [ví dụ tái sản xuất] (http: // stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). 'vị trí <- áp dụng (chuỗi [, 1], FUN = f)' dẫn đến lỗi. –
yeah Tôi đã sao chép một số dòng mã từ hướng dẫn này và không thực sự hiểu dòng này. Tôi có nghĩa là loạt [, 1] tôi nghĩ sẽ áp dụng các chức năng f vào "cột" 1 của bộ truyện. Nhưng kể từ khi loạt bài này là một số compley với cấu trúc, vv nó không hoạt động. Tôi đang nói về hướng dẫn này: http://www.r-bloggers.com/backtesting-a-trading-strategy/ – MichiZH
'fapply'! =' Apply'. Chúng là các hàm khác nhau, với các đối số khác nhau và hành vi khác nhau. –