초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1366

 

모든 것이 이것으로 귀결됩니까?

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

일종의 관습이죠?

 
Mikhail Toptunov # :

모든 것이 이것으로 귀결됩니까?

일종의 관습이죠?

 EMPTY_VALUE

이것은 이중 유형의 최대 값이며 더 높은 값은 없습니다.

 
Alexey Viktorov # :

내가 이해할 수 있듯이, 절대 0과 같은 값을 가질 수 없는 표시기의 최대값을 찾아야 합니다.

나는 NULL을 싫어하고 절대 실패하지 않는 숫자 값에 항상 0.0을 사용합니다.

나는 그것이 시스템을 로드할 것이라고 생각했고, 아마도 무언가의 무게를 가졌을 것이고, EMPTY_VALUE 와 NULL은 아마도 중요하지 않을 것입니다. 글쎄, 나는 뒤돌아 보지 않기 위해 상상한다!

 
Alexey Viktorov   # :

내가 이해할 수 있듯이, 절대 0과 같은 값을 가질 수 없는 표시기의 최대값을 찾아야 합니다.

나는 NULL을 싫어하고 절대 실패하지 않는 숫자 값에 항상 0.0을 사용합니다.


0을 입력하면 최대값과 최소값을 모두 찾아야 합니다. 그러면 최소값을 찾을 수 없습니다!!!

 
Aliaksandr Hryshyn # :

이것은 이중 유형의 최대 값이며 더 높은 값은 없습니다.

즉, 배열의 변수를 비어 있는 것으로 지정하여 무게가 가장 적게 나가도록 하려면 어떻게 해야 합니까?

 
Aliaksandr Hryshyn # :

이것은 이중 유형의 최대 값이며 더 높은 값은 없습니다.

NULL이면 더 쉬울까요?

 

일반적으로 팁 덕분에 해냈습니다. 산의 주민 인 당신에게 낮은 활))

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

더 간단한 옵션이 있다면 시스템에 어떤 옵션이 있는지 매우 흥미롭습니다.

 

도와주세요, 누구든지 도울 수 있습니다!

반복이 되도록 배열을 반복하는 방법

1) 대각선으로

2) 값 범위 (0)


난 이 알고리즘을 비틀고 있어, 난 아무데도 가지 못할거야

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

도와주세요, 누구든지 도울 수 있습니다!

반복이 되도록 배열을 반복하는 방법

1) 대각선으로

2) 값 범위 (0)


난 이 알고리즘을 비틀고 있어, 난 아무데도 가지 못할거야

대각선이면 한 사이클이면 충분합니다. 아니면 제가 질문을 잘못 이해했습니다.

어쩌면 당신은 이것이 필요합니다

 /********************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****************************/
하지만 이것은 초안...
 
Alexey Viktorov # :

대각선이면 한 사이클이면 충분합니다. 아니면 제가 질문을 잘못 이해했습니다.

어쩌면 당신은 이것이 필요합니다

하지만 이것은 초안...

흠 멋진 솔루션입니다. 이것이 밝혀지면 다르게 표시해야합니다. 방법을 생각하면서


사유: