2013-08-27 1 views
1

나는했습니다과 같은 데이터 :주문 낮은 판매 높은

  • 구입 :

    library("xts") 
    close <- c(0, -0.5, -0.75, -1, -0.75, -1.5, -2, -2.5, -3, -3.5, -3, -2.5, -2, -1, 0, 1, 1.5, 2, 2.5, 3, 2.5, 2, 0) 
    data <- xts(close, Sys.Date()-23:1) 
    colnames(data) <- "close" 
    

    나는 아래의 논리에 따라 나에게 무역 신호를 줄 것이다 다른 열을 생성하고 싶습니다 클로즈가 @, -1, -2, -3보다 작은 경우

  • 판매하는 모든 3 가까이 @ 또는 이상이있는 경우 0
  • 짧은 판매 닫기가 @ 또는 1, 2, 3
  • 판매 이상 모든 3 가까이 @ 또는 이하가되면 0
이를 위해

은 내가, 3,3,3,2,2,

data$trade <- 0 
data$trade[data$close <= -1] <- 1 
data$trade[data$close <= -2] <- 2 
data$trade[data$close <= -3] <- 3 
data$trade[data$close >= 1] <- -1 
data$trade[data$close >= 2] <- -2 
data$trade[data$close >= 3] <- -3 

데이터 무역 열이 날을주고있다 (0,0,0,1,0,1,2,2을 시도했습니다 1,0, -1, -1, -2, -2, -3, -2, -2,0) 하지만 그게 나에게 줄 것을 원해 ((0,0,0,1,1,1, -1, -2, -2, -3, -3, -3,0) 내가 살 때 @ -1 또는 -2라고 말하면 무역 신호는 0 이상이 될 때까지 있어야하고 비슷하게 짧게 팔면 @@ -1, -2 등 거래 신호는 우리가 도달 할 때까지 있어야한다. 0 이하. 친절하게도 많은 조합을 시도했지만 필요한 결과를 얻지는 못하게합니다.

답변

1

정확하게 이해했다면, 선택은 과거에 달려 있기 때문에 효율적으로 수행하기가 어렵습니다. 우아하지는 않지만이 코드는 필요한 출력을 제공합니다.

library("xts") 
close <- c(0, -0.5, -0.75, -1, -0.75, -1.5, -2, -2.5, -3, -3.5, -3, -2.5, -2, -1, 0, 1, 1.5, 2, 2.5, 3, 2.5, 2, 0) 
data <- xts(close, Sys.Date()-23:1) 
colnames(data) <- "close" 

sig.buy <- c(F,F,F) 
sig.short <- c(F,F,F) 

for(i in 1:length(data)) 
{ 
    if(data$close[i] <= -1) sig.buy[1] <- T 
    if(data$close[i] <= -2) sig.buy[2] <- T 
    if(data$close[i] <= -3) sig.buy[3] <- T 

    if(sig.buy[1] && data$close[i] >= 0) sig.buy[1] <- F 
    if(sig.buy[2] && data$close[i] >= 0) sig.buy[2] <- F 
    if(sig.buy[3] && data$close[i] >= 0) sig.buy[3] <- F 

    if(data$close[i] >= 1) sig.short[1] <- T 
    if(data$close[i] >= 2) sig.short[2] <- T 
    if(data$close[i] >= 3) sig.short[3] <- T 

    if(sig.short[1] && data$close[i] <= 0) sig.short[1] <- F 
    if(sig.short[2] && data$close[i] <= 0) sig.short[2] <- F 
    if(sig.short[3] && data$close[i] <= 0) sig.short[3] <- F 

    data$trade[i] <- sum(sig.buy) - sum(sig.short) 
} 
+0

고맙습니다. –

+0

비슷한 유형의 문제가 있습니다. 조사해보십시오. 해당 문제에 대한 링크는 http://stackoverflow.com/questions/18030620/calculate-sell-signal-based-on-current-open-position입니다. –