不好意思打擾大大們
小弟目前想回測資料,目前是把買進訊號設為1
但目前碰到的問題是連續五天都是1
而我的交易策略是只打算以第一天做買入就好
然而這情況發生很多次
也就是說有很多個連續天數的問題,想請教版上大大
小弟目前有想到以下的想法
只要買進訊號不為1就中斷迴圈並取出第一筆row
然後想說用next的方式跳過買進訊號不為1的部分
進而把每次結果儲存起來就可以得到在每次遇到連續天數中的第一筆買進資料
但小弟資質駑鈍,希望有大大能幫小弟想法的部分
或是有更好的解法也可以,非常感謝您!!
#取出買進第一天
a <- c()
i <- 4
repeat{
i <- i+1
b <- data_ma[i,]
a <- head(rbind(a,b),1)
if(data_ma$buysignal_5[i]!=1)break
}
我的做法比較笨一點
就是「記錄前一次的值」
1.一樣,用迴圈走完所有值
2.如果是 0,不處理
3.如果是 1,就判斷「前一次的值」是 0 的話才算
我不會 R,用 C 寫結果如下
你可以到 Coding Ground測試以下程式碼
看看可不可行
#include <stdio.h>
int main()
{
int prev = -1;
int a[14] = {1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1};
for (int i=0;i<14;i++) {
printf("%2d %d ", i, a[i]);
if (a[i]==1) {
if (prev==-1) {
printf("Buy (First 1).\n");
} else {
if (prev==1) {
printf("None (Duplicate).\n");
}
else if (prev==0) {
printf("Buy (1).\n");
}
}
} else {
printf("None (0).\n");
}
prev = a[i];
}
return 0;
}
碰巧看到~回覆一下
應該比迴圈快很多
abb = data.frame(編號 = seq(1,20,1),
值 = c(rep(1,5),rep(2,5),rep(3,5),rep(4,5)))
abb$num = sequence(rle(abb$值)$lengths)