-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