Как использовать цикл while, чтобы найти точки открытия и закрытия - PullRequest
0 голосов
/ 30 октября 2019

Я новичок здесь.

Я хочу сделать что-то вроде этого: мне нужно найти индекс, в котором условие выполняется в первый раз, чтобы найти начальную позицию, это может быть как с положительной, так и с отрицательной стороны (поэтому я использовал ifеще заявление);пока это работает, но когда я нашел эту позицию, я хочу сохранить ее в таблице, но также использовать ее, чтобы найти следующую первую позицию / индекс, для которого выполняется другое условие (точка закрытия). поэтому в моем примере первая открытая позиция - 387;чтобы найти позицию закрытия, мне нужна первая позиция, для которой верно соотношение> = m, но также индекс больше 387 .;если бы я сделал это правильно, то эта позиция / индекс была бы 1743, и это то, что я должен / должен использовать снова, чтобы начать все сначала, каково минимальное значение, для которого выполняется условие открывающей позиции, но индекс должен быть большечем 1743. Это довольно сложный вопрос, но я в основном хочу знать, как я могу расположить индекс 387;что в остальной части для определения позиции закрытия этот индекс 387 используется в качестве начальной точки, а затем 1743 используется для проверки, является ли первое условие верхней части формулы истинным. Это должно быть выполнено для всего набора данных.


i <- starting_from

while (i <= length(retail_stocks$ratio)){
  if ((min(which((retail_stocks$ratio > (m + k*s))  == TRUE))) < (min(which((retail_stocks$ratio < (m - k*s)) == TRUE)))) {
  pos$open[i] <-  min(which(retail_stocks$ratio > (m + k*s)))
  i <- pos$open[i] 
if(min(which(retail_stocks$ratio <= m))){
    pos$close[i] <- (min(which(retail_stocks$ratio <= m)))
    i <- pos$close[i]
} else {
  pos$open[i] <- min(which(retail_stocks$ratio < (m - k*s)))
  #pos$close[i] <- min(which(retail_stocks$ratio >= m)) 
  i <- pos$open[i]
      if(min(which(retail_stocks$ratio >= m))){
    pos$close[i] <- (min(which(retail_stocks$ratio >= m)))
    i <- pos$close[i]
  }
}
}

...