2016-06-27 4 views
0

私はトレーダーとそのアクションをシミュレートしており、プロットステートメントの繰り返しポイントを取り除こうとしています。これを行う最善の方法は何ですか?言い換えれば、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

最後の3つの点は意味がありません。

+1

あなたは一例を完了していただけますか? –

+1

@ Hack-R:f1(10,2,100,5,10,1,5)のグラフを追加しました。 – user21478

+0

@ Hack-R:異なる乱数をサンプリングしているので、f1(10,2,100,5,10,1,5)の各実行は異なります。私の場合、最後の3つのドットはそこにあるべきではないようです。 – user21478

答えて

0

私はこれがあなたの望むものだと思います。コードのコメントや文脈がなくてもわかりにくいです。あなたはc(price, pricecurrent)やったとき

は手順1、その後pricecurrent90に設定してしまった私の実験priceで、たとえば、繰り返しポイントを追加したステップ2の90 80だったとの結果が90 90 80ました。

次の行でこれを修正しようとしていたようですが、私の実験で9だった-Lを使用しても意味がないとは確信していません。私はと思っています。あなたはそこに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

関連する問題