MQL4 및 MQL5에서 Digits()를 무시하고 숫자(따옴표 제외)의 쉼표 뒤 소수 자릿수 가져오기 - 페이지 16

 

여기에 또 다른 흥미로운 과제가 있습니다. 내장된 ArraySort보다 배열 정렬 기능을 더 빠르게 만드는 것입니다.

 
Ilya Malev :
 sizeof (S)/ sizeof (T)

그리고 모든 구조체의 크기를 모든 변수의 크기로 나누는 것이 보장되는 것은 무엇입니까?

 struct SZ{
   char x1;
   char x2;
   char x3;   
};

Print ( sizeof (SZ)/ sizeof ( int )); // 0
 
fxsaber :

구조체 배열(길이는 sizeof(int)의 배수)을 int[] 배열로 변환하고 그 반대로 변환하는 빠른 구현 에 대해 브레인스토밍할 수 있습니까?

///

구조에 대한 설명 직후에 이 구조와 배열을 포함하는 공용체로 몇 줄을 더 씁니다.

 struct SS{
   int a;
   double b;
};

union UX{
   SS s;
   char a[ sizeof (S)];
};


각 구조 뒤에 작성할 필요도 없지만 템플릿을 사용할 수 있어 누구에게나 더 편리합니다.

 
Dmitry Fedoseev :

그리고 모든 구조체의 크기를 모든 변수의 크기로 나누는 것이 보장되는 것은 무엇입니까?

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL4 및 MQL5에서 Digits()를 무시하고 숫자(따옴표 제외)의 쉼표 뒤 소수 자릿수 가져오기

fxsaber , 2018.12.07 15:12

구조체 배열( 길이는 sizeof(int)의 배수임 )을 int[] 배열로 변환하고 그 반대로 변환하는 빠른 구현 에 대해 브레인스토밍할 수 있습니까?

일반적으로 솔루션은 동일한 링크에 있지만 다양성으로 인해 브레이크가 있습니다. 따라서 다중성은 충분히 이해할 수 있는 추가입니다. 상태.

도 나타났다

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 5 플랫폼 빌드 1930의 새 버전: MQL5의 플로팅 차트 창 및 .Net 라이브러리

MetaQuotes Software Corp. , 2018.10.25 17:18

  1. MQL5: 구조에 대해 Pack( integer_value ) 속성이 추가되었습니다. 이를 통해 구조 내 필드 위치의 정렬을 설정할 수 있습니다. 이는 DLL 작업 시 때때로 필요합니다. integer_value에 가능한 값은 1, 2, 4, 8, 16입니다.
    속성이 정의되지 않은 경우 기본값은 1바이트 뽑기 - pack(1)입니다.

    사용 예:
     //+------------------------------------------------------------------+
    //| Default packing                                                  |
    //+------------------------------------------------------------------+
    struct A
      {
       char               a;
       int                b;
      };
    //+------------------------------------------------------------------+
    //| Specified packing                                                |
    //+------------------------------------------------------------------+
    struct B pack( 4 )
      {
       char               a;
       int                b;
      };
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart ()
      {
       Print ( "sizeof(A)=" , sizeof (A));
       Print ( "sizeof(B)=" , sizeof (B));
      }
    //+------------------------------------------------------------------+
    결론:
    sizeof(A)=5
    sizeof(B)=8
    구조의 정렬에 대한 자세한 내용은 MSDN 에서 확인할 수 있습니다.
 
Dmitry Fedoseev :

구조를 설명한 직후에 이 구조와 배열을 포함하는 공용체로 몇 줄을 더 작성합니다.

각 구조 뒤에 작성할 필요도 없지만 템플릿을 사용할 수 있어 누구에게나 더 편리합니다.

이해하지 못했습니다. 참여를 원하시면 자신의 버전을 작성해 주세요.

 
fxsaber :

구조체 배열(길이는 sizeof(int)의 배수)을 int[] 배열로 변환하고 그 반대로 변환하는 빠른 구현 에 대해 브레인스토밍할 수 있습니까?

왜 int에서? 주문이 아니라?

(그리고 long은 더 길어질 것입니다 - 더 빨리 복사될 것입니다)

 
Taras Slobodyanik :

왜 int에서? 주문이 아니라?

 
Ilya Malev :

당신의 속도가 더 빠른 것 같습니다 :)

 // Перевод массива тиков в массив int[].
int TicksToIntArray_fxsaber3( const MqlTick &Ticks[], int &Array[] )
{
  INTEGER< MqlTick > TickInteger;

   const int Size = ArraySize (Ticks);
   ArrayResize (Array, Size * sizeof ( MqlTick ) / sizeof ( int ));
  
   int j = 0 ;

   for ( int i = 0 ; i < Size; i++)
  {
    TickInteger.Data = Ticks[i];

//    j += ArrayCopy(Array, TickInteger.Integer, j);
     for ( int k = 0 ; k < sizeof ( MqlTick ) / sizeof ( int ); k++)
      Array[j++] = TickInteger.Integer[k];
  }

   return (j);
}

// Перевод массива int[] в массив тиков.
int IntArrayToTicks_fxsaber3( const int &Array[], MqlTick &Ticks[] )
{
  INTEGER< MqlTick > TickInteger = { 0 };

   const int Size = ArraySize (Array);
   ArrayResize (Ticks, Size * sizeof ( int ) / sizeof ( MqlTick ));
  
   int j = 0 ;

   for ( int i = 0 ; i < Size; j++)
  {
//    i += ArrayCopy(TickInteger.Integer, Array, 0, i, sizeof(MqlTick) / sizeof(int));
     for ( int k = 0 ; k < sizeof ( MqlTick ) / sizeof ( int ); k++)
      TickInteger.Integer[k] = Array[i++];

    Ticks[j] = TickInteger.Data;
  }

   return (j);
}


속도를 많이 내도록 노력하겠습니다.

 
fxsaber :

이해하지 못했습니다. 참여를 원하시면 자신의 버전을 작성해 주세요.

그래서 그는 썼다 .

 
fxsaber :

일반적으로 솔루션은 동일한 링크에 있지만 다양성으로 인해 브레이크가 있습니다. 따라서 다중성은 충분히 이해할 수 있는 추가입니다. 상태.

도 나타났다

누가 이 다양성을 통제할 것인가?