2016-06-27 3 views
0

나는 트레이더와 그 동작을 시뮬레이트하고 플롯 (plot) 문에서 반복되는 점을 없애려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 즉, ninterval >1에 대해 나는 포인트가 반복되는 플롯을 계속 얻는다. 플롯을 생성하는플롯에서 반복되는 점 제거하기

f1 <- function(n,m,priceinitial,delta,mean, sd, ninterval){ 
    traders <- vector(mode="character", length=n) 
    traderscurrent <- vector(mode="character", length=n) 
    price <- vector(mode="numeric") 
    pricecurrent <- vector(mode="numeric") 
    for(nint in 1:ninterval) 
    { 
     L = floor(rnorm(1,mean,sd)) 
     print(L) 
     x3 <- runif(2,0,1) 
     v <- c(0, min(x3), max(x3)) 
     for(i in 1:n) 
     { 
     traders[i] <- runif(1,0,1) 
     if(findInterval(traders[i],v) == sample(c(1,3),1)) 
      { 
      traders[i] <- "B" 
      } 
      else if(findInterval(traders[i],v) == 2) 
        { 
      traders[i] <- "N" 
      } 
     else { 
      traders[i] <- "S" 
     } 
     } 
     print(table(traders)) 
     for(step in 1:L) 
     { 

     for(i in 1:n) 
     { 
      b <- sample(traders[-i], m) 
      print(b) 
      table(b) 
      traderscurrent[i] <- sample(b,1) 

     } 
     print(table(traderscurrent)) 
     pricecurrent[step] = priceinitial+length(which(traderscurrent == "B"))*delta-length(which(traderscurrent == "S"))*delta 
     priceinitial = pricecurrent[step] 
     traders <- traderscurrent 
     #print(nint) 
     #print(step) 
     } 
     price <- c(price,pricecurrent) 
     price <- price[-L] 

    } 
    print(price) 
    plot(price) 
    } 

호출은 다음과 같습니다

f1(10,2,100,5,10,1,5) 

enter image description here

마지막 세 개의 점은 이해가되지 않습니다.

+1

당신은 예를 완료시겠습니까? 예제를 실행하고 반복되는 점이있는 그림을 보여주십시오. –

+1

@ Hack-R : f1 (102100510,1,5) 그래프를 추가했습니다. – user21478

+0

@ Hack-R : 다른 난수를 샘플링 할 때마다 f1 (102100510,1,5)의 각 실행이 달라집니다. 내 경우에는 마지막 세 점이 없어야합니다. – user21478

답변

0

저는 이것이 여러분이 원한 것이라고 생각합니다. 코드 주석이나 더 많은 문맥이 없어도 알기가 어렵습니다. 당신이 c(price, pricecurrent)했을 때

1 단계 다음 pricecurrent90로 설정되었다 내 실험 price에서 예를 들어, 반복되는 포인트를 추가 않았다 2 단계에 90 80이고 결과는 90 90 80했다.

다음 줄에서이 문제를 해결하려 한 것처럼 보였지만 -L은 내 실험에서 9 이었으므로 반복 지점에 아무런 영향을 미치지 않았습니다. 내가 당신이 거기에 step를 사용하고 싶지만, 다시는 문맥이 없으므로 유스 케이스 - 특정 로직을 확신 할 수 없다.

f1(10,2,100,5,10,1,5) 

f1 <- function(n=10,m=2,priceinitial=100,delta=5,mean=10, sd=1, ninterval=5){ 
    cat("I need to comment my code") 
    traders <- vector(mode="character", length=n) 
    traderscurrent <- vector(mode="character", length=n) 
    price <- vector(mode="numeric") 
    pricecurrent <- vector(mode="numeric") 
    for(nint in 1:ninterval) 
    { 
    L = floor(rnorm(1,mean,sd)) 
    print(L) 
    x3 <- runif(2,0,1) 
    v <- c(0, min(x3), max(x3)) 
    for(i in 1:n) 
    { 
     traders[i] <- runif(1,0,1) 
     if(findInterval(traders[i],v) == sample(c(1,3),1)) 
     { 
     traders[i] <- "B" 
     } 
     else if(findInterval(traders[i],v) == 2) 
     { 
     traders[i] <- "N" 
     } 
     else { 
     traders[i] <- "S" 
     } 
    } 
    print(table(traders)) 
    for(step in 1:L) 
    { 

     for(i in 1:n) 
     { 
     b <- sample(traders[-i], m) 
     print(b) 
     table(b) 
     traderscurrent[i] <- sample(b,1) 

     } 
     print(table(traderscurrent)) 
     pricecurrent[step] = priceinitial+length(which(traderscurrent == "B"))*delta-length(which(traderscurrent == "S"))*delta 
     priceinitial = pricecurrent[step] 
     traders <- traderscurrent 
     #print(nint) 
     #print(step) 
    } 
    price <- c(price,pricecurrent) 
    price <- price[-step] 

    } 
    print(price) 
    plot(price) 
} 

f() 

no repeated points

관련 문제