Как использовать индекс прошлого бара, чтобы показать стрелку на графике? - PullRequest
0 голосов
/ 17 февраля 2020

Second image

for(d=limit-1; d>=0; d--)
         {
          // Line
          rsiOne[d] = iRSI(Symbol(), _Period, rsiPeriod, PRICE_CLOSE, d + 1 );
          rsiOne_Previous[d] = iRSI(Symbol(), _Period, rsiPeriod, PRICE_CLOSE, d + 2 ); 

          stoOne[d] = iStochastic(_Symbol, _Period, kPeriod, dPeriod,slowing, MODE_SMA, 0, 0, d + 1 );
          stoOne_Previous[d] = iStochastic(_Symbol, _Period, kPeriod, dPeriod,slowing, MODE_SMA, 0, 0, d + 2 );


      // try to get the time when rsi crosses below 30
      if(rsiOne[d]>=RsiDownLevel)  upTime= iTime(_Symbol,_Period,0);
      if(rsiOne_Previous[d] > RsiUpLevel && rsiOne[d] <= RsiUpLevel)  downTime = iTime(_Symbol,_Period,0);
      // end of trying to get the time when rsi crosses below 30

      // using above time, these two lines of code get the index of that candle      
      int downCount = iBarShift(Symbol(),0,upTime,true);
      int upCount = iBarShift(Symbol(),0,downTime,true);
      // end here

      // created another rsi handle which will carry the index of rsi
      idOneDown[d] = iRSI(_Symbol, _Period, rsiPeriod, PRICE_CLOSE, d + downCount );
      idOneUp[d] = iRSI(_Symbol, _Period, rsiPeriod, PRICE_CLOSE, d + upCount );


      if(RSIandStochastic==true){         
         if(idOneDown[d]<RsiDownLevel && stoOne_Previous[d]<StochDownLevel && stoOne[d]>=StochDownLevel)
         {
            upArrow[d]=Low[d]-arrowDist*Point;

         }else if(idOneUp[d] > RsiUpLevel && stoOne_Previous[d]>=StochUpLevel && stoOne[d]>=StochUpLevel){
            downArrow[d]=High[d]+arrowDist*Point;
           } 
         }
      }

Image of what I want to do то, что я хочу сделать, отличается от "if lastTwoCandle <30 && lastCandle> = 30". По изображению, используя RSI, можно узнать, когда начался восходящий тренд, и stochasti c в качестве входа. давайте предположим, что где я поместил стрелку в верхнем индикаторе, где линия стохастики c будет пересекаться выше 5. Между двумя стрелками имеется 42 свечи, буферов, доступных в mql4, не больше 8, поэтому я не могу сказать следующее: if (rsiValue [42] <30). Кроме того, обратите внимание, что мы не знаем, сколько свечей будет между этим условием. Так что я хочу сделать, если RSI пересекся ниже 30, пусть индикатор зарегистрирует эту свечу, тогда независимо от того, сколько свечей после касания RSI, если стохастика c сейчас пересекает выше 5, она должна показывать стрелку на графике (не индикатор) </p>

...