0

I have some code

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
}
}

This returns an error of

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)

Basically what it does is it takes some data called Ident and computes dates and times for when the Ident data says Bull.Engulfing. It then computes EnterPrice, StopLoss, TakeProfit, MinDate and MaxDate on each of the dates computed.

For each date/hour I want it to go through the while loop and work out how many hours (n) it takes for one of the conditions to not be satisfied in the while loop. I would like it to display a vector of either Loss if the StopLoss condition is not satisfied or Profit if the TakeProfit condition is not satisfied and I would like to display the number of hours (n) it takes to achieve the unsatisfied condition.

I have tried above but not sure where to go from there.

So for example, let's say a component of dates is 2017-01-01 10:00.

The EnterPrice might be 1.3100 therefore the StopLoss would be 1.3050 and TakeProfit would be 1.3200.

It would then check every hour after that using the Sept17 data and if the min on that day and hour went less than the StopLoss it would say Lose in a vector, if the max on a day and hour went above the TakeProfit it would say Win, and it would tell me the number of hours (n) it would take to get there.

It would then loop through for every other date where a Bull.Engulfing occurred.

TIA

User314159
  • 39
  • 4
  • 3
    Including a [minimal reproducible example](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) in your question will increase your chances of getting an answer. – Samuel Nov 22 '17 at 15:54
  • Have updated code also. I now get the error above, not sure whether I need vectorized `for` loop? – User314159 Nov 22 '17 at 20:24

0 Answers0