Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1366

 

Resume-se realmente a isto?

//+------------------------------------------------------------------+
//| Получим 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);
  }

É uma espécie de costume, não é?

 
Mikhail Toptunov #:

Resume-se realmente a isto?

É uma espécie de costume, não é?

EMPTY_VALUE

este é o valor máximo do dobro, não há nada superior

 
Alexey Viktorov #:

Da forma como o entendo, é necessário encontrar o valor máximo do indicador que nunca é igual a zero.

Odeio NULL e aplico sempre 0,0 em valores numéricos que nunca falham.

Penso que irá carregar o sistema e EMPTY_VALUE e NULL não irão pesar muito. Não sei o que estou a pensar!

 
Alexey Viktorov #:

Da forma como o entendo, é necessário encontrar o valor máximo do indicador que nunca é igual a zero.

Não suporto o NULL e aplico sempre 0,0 em valores numéricos que nunca falharão.


Preciso de procurar tanto o máximo como o mínimo se fizer zero, então não vou encontrar o valor mínimo!!!

 
Aliaksandr Hryshyn #:

este é o valor máximo do tipo duplo, não há nada superior

ou seja, como designar uma variável de uma matriz para estar vazia de modo a pesar o menos possível?

 
Aliaksandr Hryshyn #:

este é o valor máximo do tipo duplo, não há nada superior

Se NULL, seria mais fácil?

 

De qualquer modo, obrigado pelas dicas , kudos para vocês, habitantes da montanha))))

//+------------------------------------------------------------------+
//| Получим 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 existe uma opção mais simples, muito interessante qual para o sistema

 

Socorro, alguém pode ajudar!

Como é que eu forço uma matriz a passar

1) na diagonal

2) dentro do intervalo de (0).


Tenho tentado estes algoritmos, mas não consigo chegar a lado nenhum.

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

Socorro, alguém pode ajudar!

Como forçar a força bruta a passar uma matriz

1) na diagonal

2) dentro do intervalo de (0).


Estou a tentar estes algoritmos, mas não consigo encontrá-los.

Se na diagonal, um laço é suficiente. Ou talvez eu me tenha enganado na pergunta.

Talvez precise dele

/********************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****************************/
Mas é um rascunho...
 
Alexey Viktorov #:

Se diagonalmente, um ciclo é suficiente. Ou talvez tenha entendido mal a pergunta.

Talvez seja disto que precisa.

mas é um rascunho...

Hm, essa é uma solução fixe. Eu tenho esta, preciso de a reorganizar. Ainda estou a tentar descobrir como fazê-lo.