MQL4: Проблем с намирането на ниска стойност

Опитвам се да получа най-високата и най-ниската стойност от последните 20 бара. Нямам проблем с получаването на най-висока стойност, но кодът ми изглежда не работи правилно, за да получи най-ниската стойност. Просто се чудя дали има някакво предложение за това.

OnEveryNewBar1();

void OnEveryNewBar1()
{   PipValue = 1;
    if ( NDigits == 3 || NDigits == 5 ) PipValue = 10;
    if ( BarTime1 < Time[0] )  // we have a new bar opened
    {    BarTime1 = Time[0];   // keep the new bar open time
         TechnicalAnalysis_S();
         TechnicalAnalysis_L();
     }
}

void TechnicalAnalysis_S()
{
   int m =    2;
   int n =    3;
       l = 1000;
   while ( m <= 20 )
   {
      if ( 1 < 2 )
      {    if ( ( Close[2] > Open[2] ) || ( Close[1] > Open[1] ) ) int i = 2;
           while ( i > 0 )
           {
               if ( Low[i] < l ) l = Low[i];
               i = i - 1;
           }
           print ( "Lowest" + l );
           l = 1000;
      }
      m++;
      n++;
   }
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void TechnicalAnalysis_L()
{    
     int m = 2;
     int n = 3;
     while ( m <= 20 )
     {
         if ( 2 > 0 )
         {
              if ( ( Close[2] < Open[2] ) || ( Close[1] < Open[1] ) ) int i=2;
              while ( i > 0 )
              {
                  if ( High[i] > h ) h = High[i];
                  i = i - 1;
              }
              print ( "Highest" + h );
              h = 0;
         }
         m++;
         n++;
     }
}

person user1582596    schedule 28.10.2015    source източник


Отговори (1)


Въпреки че има някои странни части в кода, докато някои променливи нямат декларация, езикът има вградени функции за това.

Решение:

double   aLowestLOW_InTheLast20BARs,
       aHighestHIGH_InTheLast20BARs;
// -----------------------------------------------------------------------------    
   aLowestLOW_InTheLast20BARs =    Low[iLowest(  _Symbol,         // .self
                                                 PERIOD_CURRENT,  // .self
                                                 MODE_LOW,        // LOW
                                                 20,              // Last 20 BARs
                                                  0               // from [0]
                                                 )
                                       ];
// -----------------------------------------------------------------------------
   aHighestHIGH_InTheLast20BARs = High[iHighest( _Symbol,         // .self
                                                 PERIOD_CURRENT,  // .self
                                                 MODE_HIGH,       // HIGH
                                                 20,              // Last 20 BARs
                                                  0               // from [0]
                                                 )
                                       ];
person user3666197    schedule 28.10.2015