MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 16

 

Merhaba, lütfen bir fiyat bulmama yardım edin   ilkinden daha büyük fraktalın - en yakın dört üst fraktal.

 
mila.com :

Merhaba, lütfen bir fiyat bulmama yardım edin   ilkinden daha büyük fraktalın - en yakın dört üst fraktal.

void OnTick ()
{
   Comment ( "Min = " ,MaxMinFractal( MODE_LOWER , 4 ), "; Max = " ,MaxMinFractal( MODE_UPPER , 4 ));
}

//===============================================================================================
//--------------------------------- Возвращает Max/Min фрактала --------------------------------+
//===============================================================================================
double MaxMinFractal( int mode= MODE_UPPER , int nf= 4 ) {
string symb= Symbol ();
double f= 0 ,min= 9999999 ,max= 0 ;
int kf= 0 ;
   for ( int i= 3 ; i< iBars (symb, 0 ); i++) {
   if (mode== MODE_LOWER ){
    f= iFractals (symb, 0 , MODE_LOWER , i);
     if (f!= 0 ) {
      kf++;
       if (min> iLow (symb, 0 ,i)) min= iLow (symb, 0 ,i);
       if (kf>=nf) return (min);
     }}
     if (mode== MODE_UPPER ){
    f= iFractals (symb, 0 , MODE_UPPER , i);
     if (f!= 0 ) {
      kf++;
       if (max< iHigh (symb, 0 ,i)) max= iHigh (symb, 0 ,i);
       if (kf>=nf) return (max);
    }}}
   return (- 1 );
}
 
mila.com :

Merhaba, lütfen bir fiyat bulmama yardım edin   ilkinden daha büyük fraktalın - en yakın dört üst fraktal.

#property strict

void OnStart ()
  {
   int i= 1 ,cnt= 1 ;
   double lastupfr= 0 ;

   while (cnt< 5 )
     {
       double upfr= iFractals ( _Symbol , 0 , 1 ,i);
       if (upfr!= 0 )
        {
         if (upfr>lastupfr) lastupfr=upfr;
         cnt++;
        }
      i++;
     }
   Comment ( "Biggest UpFractal = " ,lastupfr);
  }
 
Vitaly Muzichenko :
Fraktalları karşılaştırmak değil, maksimumu bulmak, bir fraktal ile bir bara kadar, .. çok basit, Teşekkürler.
 
Vitalie Postolache :

Daha kısa süre içinde) Teşekkürler.

Ve bu tür özelleştirilebilir fraktallardan maksimumu nasıl seçmeli?

//|    nl - количество баров слева                                             |
//|    nr - количество баров справа                                            |
//+----------------------------------------------------------------------------+
double GetNearestUpFractal( string sy= "0" , int tf= 0 , int nl= 2 , int nr= 2 ) {
   bool f;
   int   fb, i, nb=- 1 ;

   if (sy== "" || sy== "0" ) sy= Symbol ();
   if (nl< 1 ) nl= 1 ;
   if (nr< 1 ) nr= 1 ;

  fb=nr;
   while (nb< 0 ) {
    fb++;
    f= True ;
     for (i=fb; i>fb-nr; i--) {
       if ( iHigh (sy, tf, i)< iHigh (sy, tf, i- 1 )) { f= False ; break ; }
    }
     if (f) {
       for (i=fb; i<fb+nl; i++) {
         if ( iHigh (sy, tf, i)< iHigh (sy, tf, i+ 1 )) { f= False ; break ; }
      }
       if (f) { nb=fb; break ; }
    }
  }

   return ( iHigh (sy, tf, nb));
}
 
mila.com :

Daha kısa süre içinde) Teşekkürler.

Ve bu tür özelleştirilebilir fraktallardan maksimumu nasıl seçmeli?

//|    nl - количество баров слева                                             |
//|    nr - количество баров справа                                            |
//+----------------------------------------------------------------------------+
double GetNearestUpFractal( string sy= "0" , int tf= 0 , int nl= 2 , int nr= 2 ) {
   bool f;
   int   fb, i, nb=- 1 ;

   if (sy== "" || sy== "0" ) sy= Symbol ();
   if (nl< 1 ) nl= 1 ;
   if (nr< 1 ) nr= 1 ;

  fb=nr;
   while (nb< 0 ) {
    fb++;
    f= True ;
     for (i=fb; i>fb-nr; i--) {
       if ( iHigh (sy, tf, i)< iHigh (sy, tf, i- 1 )) { f= False ; break ; }
    }
     if (f) {
       for (i=fb; i<fb+nl; i++) {
         if ( iHigh (sy, tf, i)< iHigh (sy, tf, i+ 1 )) { f= False ; break ; }
      }
       if (f) { nb=fb; break ; }
    }
  }

   return ( iHigh (sy, tf, nb));
}
#property strict

void OnStart ()
  {
   int i= 1 ,cnt= 1 ;
   double lastupfr= 0 ;

   while (cnt< 5 )
     {
       double upfr=GetNearestUpFractal( _Symbol , 0 , 2 , 2 );
       if (upfr!= 0 )
        {
         if (upfr>lastupfr) lastupfr=upfr;
         cnt++;
        }
      i++;
     }
   Comment ( "Biggest UpFractal = " ,lastupfr);
  }
//-----------
//|    nl - количество баров слева                                             |
//|    nr - количество баров справа                                            |
//+----------------------------------------------------------------------------+
double GetNearestUpFractal( string sy= "0" , int tf= 0 , int nl= 2 , int nr= 2 ) {
   bool f;
   int   fb, i, nb=- 1 ;

   if (sy== "" || sy== "0" ) sy= Symbol ();
   if (nl< 1 ) nl= 1 ;
   if (nr< 1 ) nr= 1 ;

  fb=nr;
   while (nb< 0 ) {
    fb++;
    f= True ;
     for (i=fb; i>fb-nr; i--) {
       if ( iHigh (sy, tf, i)< iHigh (sy, tf, i- 1 )) { f= False ; break ; }
    }
     if (f) {
       for (i=fb; i<fb+nl; i++) {
         if ( iHigh (sy, tf, i)< iHigh (sy, tf, i+ 1 )) { f= False ; break ; }
      }
       if (f) { nb=fb; break ; }
    }
  }

   return ( iHigh (sy, tf, nb));
}
Bunun gibi bir şey
 
Alekseu Fedotov :

Bunun gibi bir şey

Bu, en yakın fraktalın fiyatını döndürür.

Maksimum dört özelleştirilebilir fraktal nasıl bulunur?

 
mila.com :

Bu, en yakın fraktalın fiyatını döndürür.

Maksimum dört özelleştirilebilir fraktal nasıl bulunur?

Hm... seçim için yapılandırılmış 4 fraktal seçmeniz gerekiyor ve gereksiz alt fraktallar çekerek bir Maksim bırakın :)
 
Alexey Kozitsyn :
Hm... seçim için yapılandırılmış 4 fraktal seçmeniz gerekiyor ve gereksiz alt fraktallar çekerek bir Maksim bırakın :)
Nasıl yapılır?
 
mila.com :
Nasıl yapılır?
Bir döngüde.