Find Oscillators Last Cross

Beha Kadioglu
251
Beha Kadioglu  

Hi,

I would like to ask if there is any existing indicator or any way to find statistic Oscillators previous crossed.

More explanation in the attached image



William Roeder
24607
William Roeder  
FxTrader_: I would like to ask if there is any existing indicator or any way to find statistic Oscillators previous crossed.
Look back bars and check
int find_XX_cross(int iBeg=0){
  for(;iBeg < Bars; ++iBeg){
     bool wasAbove = xx(..., FAST, iBeg+1) > xx(..., SLOW, iBeg+1);
     bool  isAbove = xx(..., FAST, iBeg)   > xx(..., SLOW, iBeg);
     bool hasCrossed = isAbove != wasAbove;
     if(hasCrossed) return iBeg;
  }
/////
int Last_Crossed = find_XX_cross();
int Prev_Cross[2];
Prev_Cross[0]    = find_XX_cross(Last_Crossed+1);
Prev_Cross[1]    = find_XX_cross(Prev_Cross[0]+1);
Beha Kadioglu
251
Beha Kadioglu  

Hi WHRoeder,

Thank you for your reply, I have to many error with the code, I'm new to mql and i couldn't solve it. Please help.


     int find_XX_cross(int iBeg=0)
      
     {
     for(iBeg < Bars; ++iBeg)
       {
        bool wasAbove = xx(iStochastic(NULL,0,15,5,5,MODE_SMA,0,MODE_MAIN,iBeg+1) > xx(iStochastic(NULL,0,15,5,5,MODE_SMA,0,MODE_SIGNAL,iBeg+1)));
        bool  isAbove = xx(iStochastic(NULL,0,15,5,5,MODE_SMA,0,MODE_MAIN,iBeg)   > xx(iStochastic(NULL,0,15,5,5,MODE_SMA,0,MODE_SIGNAL,iBeg)));
        
        bool hasCrossed = isAbove != wasAbove;
        if(hasCrossed) return iBeg;
       }
         /////
         int Last_Crossed = find_XX_cross();
         int Prev_Cross[2];
         Prev_Cross[0]    = find_XX_cross(Last_Crossed+1);
         Prev_Cross[1]    = find_XX_cross(Prev_Cross[0]+1);
     }



Alain Verleyen
41263
Alain Verleyen  
FxTrader_:

Hi WHRoeder,

Thank you for your reply, I have to many error with the code, I'm new to mql and i couldn't solve it. Please help.

:-D

WHRoeder provides you pseudo code, you need to think and apply it to your case.

William Roeder
24607
William Roeder  
FxTrader_: statistic Oscillators previous crossed.

Did you specify what oscillator you're talking about? So of course I couldn't use specific code. So I wrote XX():

bool wasAbove = xx(..., FAST, iBeg+1) > xx(..., SLOW, iBeg+1);
bool  isAbove = xx(..., FAST, iBeg)   > xx(..., SLOW, iBeg);
You replaced FAST and SLOW, with MAIN and SIGNAL. why didn't you follow through and replace xx() with your oscillator also?
bool wasAbove = xx(iStochastic(NULL,0,15,5,5,MODE_SMA,0,MODE_MAIN,iBeg+1) > xx(iStochastic(NULL,0, 15, 5, 5, MODE_SMA, 0, MODE_SIGNAL, iBeg+1)));
bool  isAbove = xx(iStochastic(NULL,0,15,5,5,MODE_SMA,0,MODE_MAIN,iBeg)   > xx(iStochastic(NULL,0, 15, 5, 5, MODE_SMA, 0, MODE_SIGNAL, iBeg)));