2
require(xts)

data<- c(100,101,102,103,104,99,98,97,94,93,103,90,104,105,110)
date<- Sys.Date()-15:1
file<- xts(data,date)
colnames(file)<- "CLOSE"
file$high<- cummax(file$CLOSE)
file$trade<- ifelse(file$high*.95>=file$CLOSE, 1,ifelse(file$high*.9>=file$CLOSE, 2,0))
file

           CLOSE high trade
2013-07-05   100  100     0
2013-07-06   101  101     0
2013-07-07   102  102     0
2013-07-08   103  103     0
2013-07-09   104  104     0
2013-07-10    99  104     0
2013-07-11    98  104     1
2013-07-12    97  104     1
2013-07-13    94  104     1
2013-07-14    93  104     1
2013-07-15   103  104     0
2013-07-16    90  104     1
2013-07-17   104  104     0
2013-07-18   105  105     0
2013-07-19   110  110     0

私が与えた取引列のコマンドは で.90*column high >= close、取引の結果は2です。2013 年 7 月 14 日と 2013 年 7 月 16 日の取引列が 2 にならない理由がわかりません。

上記の問題に対する答えがあります。私の実際の問題は別のものです。私は調査を行ってそれを成し遂げると思っていましたが、それでも問題は解決しません。終値が 5%、10%、15% 下がるたびに取引列に +1 または -1 を与える必要があります。 1. 特定の日付に +1 と -1 を追加する場合、-ve または 5 を超えてはなりません。

4

2 に答える 2

2

file$high*.9>=file$CLOSEいつでもis TRUEfile$high*.95>=file$CLOSEis もTRUEあり、最初のifelseコールは neverであるため、trade 列は決して 2ではありませんFALSE

代わりに次のようにします。

file$trade <- 0
file$trade[file$high*.95>=file$CLOSE] <- 1
file$trade[file$high*.90>=file$CLOSE] <- 2
于 2013-07-20T10:58:11.470 に答える