MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 16

 

안녕하세요 가격좀 알려주세요   더 큰 프랙탈의 첫 번째부터 - 가장 가까운 4개의 상위 프랙탈.

 
mila.com :

안녕하세요 가격좀 알려주세요   더 큰 프랙탈의 첫 번째부터 - 가장 가까운 4개의 상위 프랙탈.

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 :

안녕하세요 가격좀 알려주세요   더 큰 프랙탈의 첫 번째부터 - 가장 가까운 4개의 상위 프랙탈.

#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 :
프랙탈을 비교하는 것이 아니라 프랙탈이 있는 막대까지 최대값을 찾으려면 .. 너무 간단합니다. 감사합니다.
 
Vitalie Postolache :

더 짧게) 감사합니다.

그리고 이러한 사용자 정의 가능한 도형에서 최대값을 선택하는 방법은 무엇입니까?

//|    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 :

더 짧게) 감사합니다.

그리고 이러한 사용자 정의 가능한 도형에서 최대값을 선택하는 방법은 무엇입니까?

//|    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));
}
이 같은
 
Alekseu Fedotov :

이 같은

이것은 가장 가까운 프랙탈의 가격을 반환합니다.

최대 4개의 사용자 지정 가능한 프랙탈을 찾는 방법은 무엇입니까?

 
mila.com :

이것은 가장 가까운 프랙탈의 가격을 반환합니다.

최대 4개의 사용자 지정 가능한 프랙탈을 찾는 방법은 무엇입니까?

흠.. 4개의 프랙탈을 선택해서 선택해야 하고, 쓸데없는 하부 프랙탈을 쏴서 막심은 1개 남겨둡니다 :)
 
Alexey Kozitsyn :
흠... 4개의 프랙탈을 선택해서 선택해야 하고, 쓸데없는 하부 프랙탈을 쏴서 막심 하나 남겨두세요 :)
그것을 하는 방법?
 
mila.com :
그것을 하는 방법?
주기에서.