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

 
Vitalie Postolache :
정렬 후 ArraySetAsSeries를 사용하여 인덱싱 순서를 변경하면 어떻게 될까요?
ArraySetAsSeries는다차원 배열 에 적용되지 않습니다.
 
Alexey Viktorov :
ArraySetAsSeries는 다차원 배열 에 적용되지 않습니다.

예, 해당되지 않습니다. 그리고 어떤 용도인지 아시는 분 답변 부탁드립니다.

 
Vitaly Muzichenko :

예, 해당되지 않습니다. 그리고 어떤 용도인지 아시는 분 답변 부탁드립니다.

때로는 2차원 배열의 버블 정렬을 사용합니다. 정렬할 방향과 치수를 선택할 수 있습니다.
 
Artyom Trishkin :
때로는 2차원 배열의 버블 정렬을 사용합니다. 정렬할 방향과 치수를 선택할 수 있습니다.

코드를 받으러 집에 오거나 마음에 들지 않으면 레이아웃을 지정합니다.)

추가: 얼마나 리소스 집약적입니까?

 
Vitaly Muzichenko :
코드를 받으러 집에 오거나 마음에 들지 않으면 레이아웃을 지정합니다.)
그러니 맥주 한 잔 하시고 방문해보세요 ;)

나는 당신이 쓴 배열의 차원을 기억하지 못합니다. 아마도 필요하지 않을 수도 있지만 여기에 밀어 넣을 것입니다 ...

//+------------------------------------------------------------------+
//| Пузырьковая сортировка двумерного массива                        |
//+------------------------------------------------------------------+
template < typename T>
void ArraySortBubbleTwoDims(T& array[][TWO_DIM], int sort_dimension= 0 , int sort_direction= 0 ) {
   T     t= 0 ;
   int    k= ArrayRange (array, 1 );     // Количество колонок
   int    n= ArrayRange (array, 0 );     // Количество строк
  
   //---
   if (sort_dimension< 0 ) sort_dimension= 0 ;
   if (sort_dimension>k) sort_dimension=k;
   //---
   for ( int i=n- 1 ; i> 0 ; i--) {
       for ( int j= 0 ; j<i; j++) {
         //--- по возрастанию
         if (sort_direction== 0 ) {
             if (array[j][sort_dimension]>array[j+ 1 ][sort_dimension]) {
               for ( int e= 0 ; e<k; e++) {
                  t=array[j][e];
                  array[j][e]=array[j+ 1 ][e];
                  array[j+ 1 ][e]=t;
                  }
               }
            }
         //--- по убыванию
         else {
             if (array[j][sort_dimension]<array[j+ 1 ][sort_dimension]) {
               for ( int e= 0 ; e<k; e++) {
                  t=array[j][e];
                  array[j][e]=array[j+ 1 ][e];
                  array[j+ 1 ][e]=t;
                  }
               }
            }
         }
      }
}
//+------------------------------------------------------------------+
그는 그것을 은닉처에서 꺼냈지만 빠르게 템플릿으로 변경했습니다. 급하게 망친거 아닐까...
 
Artyom Trishkin :
그러니 맥주 한 잔 하시고 방문해보세요 ;)

나는 당신이 쓴 배열의 차원을 기억하지 못합니다. 아마도 필요하지 않을 수도 있지만 여기에 밀어 넣을 것입니다 ...

겨울인 것 같지만 스키는 가지 않는다

void Func()
{
double m[][ 3 ];

if (условия)
  {
   // много кода
         c++;
         ArrayResize (m, c);
         m[c- 1 ][ 0 ]= Lots();
         m[c- 1 ][ 1 ]= Ticket();
         m[c- 1 ][ 2 ]= Profit();
  }
BySort(m); // передаём в функцию "BySort"
}

void BySort( double &mas[][ 3 ])
{
// Сортируем по размеру лота от большего к меньшему
   ArraySort (mas);
   ArraySetAsSeries (mas, true ); // при такой записи mql5 ругается, в mql4 работает

... здесь работа с уже сортированным массивом и основной код
}

오류 발생: "'' - 매개변수 변환이 허용되지 않습니다. e.mq5 2076 20"

 
Vitaly Muzichenko :

겨울인 것 같지만 스키는 가지 않는다

void Func()
{
double m[][ 3 ];

if (условия)
  {
   // много кода
         c++;
         ArrayResize (m, c);
         m[c- 1 ][ 0 ]= Lots();
         m[c- 1 ][ 1 ]= Ticket();
         m[c- 1 ][ 2 ]= Profit();
  }
BySort(m); // передаём в функцию "BySort"
}

void BySort( double &mas[][ 3 ])
{
// Сортируем по размеру лота от большего к меньшему
   ArraySort (mas);
   ArraySetAsSeries (mas, true ); // при такой записи mql5 ругается, в mql4 работает

... здесь работа с уже сортированным массивом и основной код
}

오류 발생: "'' - 매개변수 변환이 허용되지 않습니다. e.mq5 2076 20"

그래서 매뉴얼은 이렇게 말합니다.

메모

AS_SERIES 플래그는 다차원 배열 및 정적 배열(즉, 컴파일 타임에 대괄호로 묶인 크기가 지정된 배열)에 대해 설정할 수 없습니다.

그리고 내가 제안한 기능으로 정렬을 방해하는 것은 무엇입니까?

 
Artyom Trishkin :
그래서 매뉴얼은 이렇게 말합니다.

메모

AS_SERIES 플래그는 다차원 배열 및 정적 배열(즉, 컴파일 타임에 대괄호로 묶인 크기가 지정된 배열)에 대해 설정할 수 없습니다.

그리고 내가 제안한 기능으로 정렬을 방해하는 것은 무엇입니까?

함수에 전달할 때 정확히 동일한 오류
 
Vitaly Muzichenko :
함수에 전달할 때 정확히 동일한 오류
어느 곳에서?
 
Artyom Trishkin :
어느 곳에서?

귀하의 " ArraySortBubbleTwoDims "에

일반적으로 사이클을 펼치면 문제가 해결됩니다. 하지만 여전히 표준 함수의 형태로 정상적인 솔루션을 보고 싶었습니다.