我有一些代码
dates <- as.POSIXct(subset(Ident, coredata.Ident. == "Bull.Engulfing")$Date, format="%Y.%m.%d %H:%M")
for(i in seq_along(dates)){
EnterPrice<-as.vector(Sept17$Open[(dates)])
StopLoss<-as.vector(EnterPrice-0.0050)
TakeProfit<-as.vector(EnterPrice+0.0100)
MinDate<-as.vector(Sept17$Low[(dates)])
MaxDate<-as.vector(Sept17$High[(dates)])
n<-0
m<-0
while (MinDate > StopLoss) {
n<-n+1
MinDate<-Sept17$Low[Sept17[dates,which.i=TRUE]+n]
}
while (MaxDate < TakeProfit) {
m<-m+1
MaxDate<-Sept17$High[Sept17[dates,which.i=TRUE]+m]
}
if (m<n) {
F$Outcome=print("Win")
F$Hours=m
} else {
F$Outcome=print("Lose")
F$Hours=n
}
}
这会返回错误
Error in `[.xts`(Sept17$High, Sept17[dates, which.i = TRUE] + m) :
subscript out of bounds
In addition: There were 50 or more warnings (use warnings() to see the first 50)
它的作用基本上是需要一些名为Ident
的数据,并计算Ident
数据显示Bull.Engulfing
的日期和时间。然后,它会计算每个计算日期的EnterPrice, StopLoss, TakeProfit, MinDate
和MaxDate
。
对于每个日期/小时,我希望它通过while
循环,计算出在while循环中不满足其中一个条件需要多少小时(n
)。如果不满足Loss
条件,我希望显示StopLoss
的向量;如果Profit
条件不满足,我希望显示TakeProfit
的向量,我想显示达到不满意条件所需的小时数(n
)。
我已经尝试过,但不知道从哪里去。
例如,假设dates
的一个组件是2017-01-01 10:00
。
EnterPrice
可能为1.3100
,因此StopLoss
为1.3050
而TakeProfit
为1.3200
。
然后,它将使用Sept17
数据检查每个小时后,如果当天和小时的分钟数小于StopLoss
,它会在矢量中显示Lose
,如果一天和一小时的最大值超过TakeProfit
它会说Win
,它会告诉我到达那里所需的小时数(n
)。
然后,它会在Bull.Engulfing
发生的每个其他日期循环播放。
TIA