Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1366

 

Si riduce davvero a questo?

//+------------------------------------------------------------------+
//| Получим High для заданного номера бара                           |
//+------------------------------------------------------------------+
double CNewBar::iHighMax(int ot,int bands)
  {
   double result=-1;
   for(i=ot; i<bands; i++)
      if(m_ExtLowerBuffer[i]!=EMPTY_VALUE)
         if(m_ExtLowerBuffer[i]>result)
            result=lh;
   return(result);
  }

È una specie di abitudine, vero?

 
Mikhail Toptunov #:

Si riduce davvero a questo?

È una specie di abitudine, vero?

EMPTY_VALUE

questo è il valore massimo del doppio, non c'è niente di più alto

 
Alexey Viktorov #:

Per come la vedo io, dovete trovare il valore massimo dell'indicatore che non è mai uguale a zero.

Odio il NULL e applico sempre lo 0,0 nei valori numerici che non fallisce mai.

Penso che caricherà il sistema e EMPTY_VALUE e NULL non peseranno molto. Non so a cosa sto pensando!

 
Alexey Viktorov #:

Per come la vedo io, dovete trovare il valore massimo dell'indicatore che non è mai uguale a zero.

Non sopporto il NULL e applico sempre lo 0,0 nei valori numerici che non falliranno mai.


Ho bisogno di cercare sia il massimo che il minimo, se faccio zero, allora non troverò il valore minimo!!!

 
Aliaksandr Hryshyn #:

questo è il valore massimo del tipo double, non c'è niente di più alto

Cioè, come faccio a designare una variabile in un array come vuota in modo che pesi meno?

 
Aliaksandr Hryshyn #:

questo è il valore massimo del tipo double, non c'è niente di più alto

Se NULLA, sarebbe più facile?

 

Comunque fatto così, grazie per i consigli, complimenti a voi abitanti delle montagne)))

//+------------------------------------------------------------------+
//| Получим Lowest для заданного промежутка                          |
//+------------------------------------------------------------------+
double CNewBar::iLowMin(int ot,int bands)
  {
   double result=EMPTY_VALUE;
    for(int i=ot; i<ot+bands; i++)
      if(m_ExtLowerBuffer[i]!=NULL)
         if(m_ExtLowerBuffer[i]<result)
            result=m_ExtLowerBuffer[i];
   return(result);
  }
//+------------------------------------------------------------------+
//| Получим High для заданного номера бара                           |
//+------------------------------------------------------------------+
double CNewBar::iHighMax(int ot,int bands)
  {
   double result=NULL;
   for(int i=ot; i<ot+bands; i++)
      if(m_ExtUpperBuffer[i]!=NULL)
         if(m_ExtUpperBuffer[i]>result)
            result=m_ExtUpperBuffer[i];
   return(result);
  }

Se c'è un'opzione più semplice, molto interessante quale per il sistema

 

Aiuto, qualcuno può aiutare!

Come faccio a forzare un array per passare attraverso

1) sulla diagonale

2) nell'intervallo di (0).


Ho provato questi algoritmi, ma non riesco ad arrivare da nessuna parte.

void OnStart()
{
   for( int k = 0; k < ARRAY_SIZE_X; k++ ){
      for( int x = k, y = 0; x >= 0 && y < ARRAY_SIZE_Y; x--, y++ ){
         Print( "y = ", y, ", x = ", x );
         if( array[y][x] > 0 )
         {
         }
      }
   }
   for( int k = 1; k < ARRAY_SIZE_Y; k++ ){
      for( int x = ARRAY_SIZE_X-1, y = k; x >= 0 && y < ARRAY_SIZE_Y; x--, y++ ){
         Print( "y = ", y, ", x = ", x );
         if( array[y][x] > 0 )
         {
         }
      }
   }
}
 
Mikhail Toptunov #:

Aiuto, qualcuno può aiutare!

Come faccio a forzare un array per passare attraverso

1) sulla diagonale

2) nell'intervallo di (0).


Sto provando questi algoritmi, ma non riesco a trovarlo.

Se sulla diagonale, un anello è sufficiente. O forse ho sbagliato la domanda.

Forse ne hai bisogno

/********************Script program start function*******************/
void OnStart()
 {
  int array[5][3];
  for(int k = 0; k < ArrayRange(array, 0); k++)
   {
    for(int x = 0; x < ArrayRange(array, 1); x++)
     {
      if(k+x >= ArrayRange(array, 0))
        break;
      Print("array[", k+x, "][", x, "]", array[k+x][x]);
     }
   }
 }/******************************************************************/
/*****************************End program****************************/
Ma è una bozza...
 
Alexey Viktorov #:

Se in diagonale, un ciclo è sufficiente. O forse ho capito male la domanda.

Forse questo è ciò di cui avete bisogno.

ma è una bozza...

Hm, questa è una bella soluzione. Ho questo, devo riorganizzarlo, sto ancora cercando di capire come farlo.


Motivazione: