학습 논리 - 페이지 15

 
hrenfx :

때로는 데이터를 건드리지 않고 MQL4에서 데이터를 정렬해야 할 필요가 있습니다. MQL4에는 포인터가 없으며 구조도 없습니다.

다른 옵션은 Positions[][2]의 배열을 만들고, 정렬이 필요한 매개변수를 0 인덱스에서 복사하고, 첫 번째 것을 위치에 제공하는 것입니다. 그런 다음 표준 ArraySort 함수를 사용하여 배열을 정렬합니다.

장점 - ArraySort는 효율적인 정렬 알고리즘 을 사용하며 네이티브 코드에서도 작동합니다.

 
Candid :

다른 옵션은 Positions[][2]의 배열을 만들고, 정렬이 필요한 매개변수를 0 인덱스에서 복사하고, 첫 번째 것을 위치에 제공하는 것입니다. 그런 다음 표준 ArraySort 함수를 사용하여 배열을 정렬합니다.

이전 페이지에 있는 내 스크립트를 귀하의 방법으로 변환할 수 있습니까? 설명을 이해하지 못했습니다.
 
hrenfx :
이전 페이지에 있는 내 스크립트를 귀하의 방법으로 변환할 수 있습니까? 설명을 이해하지 못했습니다.

나는 https://www.mql5.com/en/users/candid 에서 제안한 방식을 좋아했습니다. 전에 조금 더 어렵게 만들었습니다. 나는 더 간단한 것을 사용할 것이다. 이 경우 기호를 기준으로 정렬할 수 있습니다. 아주 편안하게
 
hrenfx :
이전 페이지에 있는 내 스크립트를 귀하의 방법으로 변환할 수 있습니까? 설명을 이해하지 못했습니다.

전체 스크립트는 그렇지 않지만 여성 기능의 스케치는 아이디어를 이해하기에 충분해야 합니다.

 void SortArrayINT( int & Array[], int & Positions[][]) {
   int i, Size = ArraySize (Array);
    
   ArrayResize (Positions, Size);
  
   for (i = 0 ; i < Size; i++) {
    Positions[i][ 0 ] = Array[i];
    Positions[i][ 1 ] = i;
  }
   ArraySort (Positions);
   return ;
}


이제 Positions[0][1] - Array 배열의 가장 작은 요소 인덱스, Positions[1][1] - 다음으로 큰 요소 인덱스, Positions[i][1] - 인덱스 i 번째 것.

 
Candid :

전체 스크립트는 그렇지 않지만 여성 기능의 스케치는 아이디어를 이해하기에 충분해야 합니다.

MQL4에서 다차원 배열 작업의 특성에 대해 알지 못했습니다. 감사합니다. 방법이 작동 중입니다.

 void SortArrayINTCandid( int Array[], int & Positions[][] )
{
  int Size = ArraySize (Array);
    
  ArrayResize (Positions, Size);
  
  for ( int i = 0 ; i < Size; i++)
  {
    Positions[i][ 0 ] = Array[i];
    Positions[i][ 1 ] = i;
  }

  ArraySort (Positions);

  return ;
}

void PrintInfo( string SortName, int Array[] )
{
  int PositionsCandid[][ 2 ];
  
  SortArrayINTCandid(Array, PositionsCandid);
  
  Print ( "Sort by " + SortName);
  Print ( "SYMBOL   PROFIT   POS   SL" );

  for ( int i = 0 ; i < AMOUNT; i++)
    Print (Symbols[PositionsCandid[i][ 1 ]] + "   " + Profit[PositionsCandid[i][ 1 ]] + "   " +
          Pos[PositionsCandid[i][ 1 ]] + "   " + SL[PositionsCandid[i][ 1 ]]);
          
  Print ( "" );
          
  return ;
}