-1
我有一個Dataframe,其中包含不同時間序列數據的列。我需要這些列如下自動插入功能,找到最佳的組合(最高回報):將技術交易規則應用於所有輸入組合
returns <- as.data.frame(rep(0, 4261)) #4261 because that's the length of n1.lc
returns$n2_5_10 <- rep(0, nrow(returns))
MSVrule <- function(n1, n2, hold){
for(i in 13:nrow(n1.lc)){
if (n1[i] > n2[i] & n1[i-1] < n2[i-1]) {
returns$n2_5_10[i] <- dt.lc$Settle[i - hold] - dt.lc$Settle[i]
} else {
if (n1[i] < n2[i] & n1[i-1] > n2[i-1])
{returns$n2_5_10[i] <- dt.lc$Settle[i] - dt.lc$Settle[i - hold]
}
else{
NULL
}
}
}
}
MSVrule(n1.lc$N1_2_5, n2.lc$n2_2_10, 5)
此功能不起作用,留下returns$n2_5_10[i] 0
然而,當我specifiy載體在它的工作原理的功能:
hold <- 5
for(i in 13:nrow(n1.lc)){
if (n1.lc$N1_2_5[i] > n2.lc$n2_2_10[i] & n1.lc$N1_2_5[i-1] < n2.lc$n2_2_10[i-1]) {
returns$n2_5_10[i] <- (dt.lc$Settle[i - hold] - dt.lc$Settle[i])/dt.lc$Settle[i]
} else {
if (n1.lc$N1_2_5[i] < n2.lc$n2_2_10[i] & n1.lc$N1_2_5[i-1] > n2.lc$n2_2_10[i-1])
{returns$n2_5_10[i] <- (dt.lc$Settle[i] - dt.lc$Settle[i - hold])/dt.lc$Settle[i - hold]
}
else{
NULL
}
}
}
下一步是將功能自動適用於從數據幀n1.lc
載體的其它組合。但我需要這個功能先行工作。
請提供一個可重複的例子。現在你不說錯誤是什麼,你可以擴展嗎? –
這兩個示例代碼都不是等價的操作,因爲底部在'if'子句中有除數。 – Parfait