mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 139

 
fxsaber :

이 옵션은 작동하지 않습니다.

코드를 수정했습니다. 이제 모든 것이 정상입니다.
 
Alexey Navoykov :
코드를 수정했습니다. 이제 모든 것이 정상입니다.

오류가 있는 내용을 게시했습니다. tk. 전혀 컴파일되지 않습니다.

 
fxsaber :

오류가 있는 내용을 게시했습니다. tk. 전혀 컴파일되지 않습니다.

예, 봉인되었습니다. 수정했습니다.
 
Alexey Navoykov :
예, 봉인되었습니다. 수정했습니다.

덕분에 작동합니다. 성능에 미치는 영향은 두고 봐야 합니다.

 
동적 리소스(예: Canvas)를 사용하는 사용자의 경우 이러한 방식으로 배열 채우기 속도를 높이는 것이 좋습니다.

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

오류, 버그, 질문

fxsaber , 2019.07.09 18:36

 void FillArray1( int &Array[] )
{
   const int Size = ArraySize (Array);
  
   for ( int i = 0 ; i < Size; i++)
    Array[i] = i;
}

#define ARRAY_SIZE 10000

void FillArray2( int &Array[] )
{
   int ArrayStatic[ARRAY_SIZE];
  
   const int Size = ArraySize (Array);
  
   for ( int i = 0 ; i < Size;)
  {
     const int Size2 = i + ARRAY_SIZE < Size ? ARRAY_SIZE : Size - i;
    
     for ( int j = 0 ; j < Size2; j++)
      ArrayStatic[j] = i++;
      
     if (Size2)
       ArrayCopy (Array, ArrayStatic, i - Size2, 0 , Size2);
  }
}

#define BENCH(A)                                                               \
{                                                                              \
   const ulong _StartTime = GetMicrosecondCount ();                              \
  A;                                                                           \
   Print ( "Time[" + #A + "] = " + ( string )( GetMicrosecondCount () - _StartTime)); \
}

void OnStart ()
{
   int Array1[];
   ArrayResize (Array1, 1 e7);

   int Array2[];
   ArrayResize (Array2, 1 e7);
  
  BENCH(FillArray1(Array1));
  BENCH(FillArray2(Array2));
}
수십 퍼센트의 가속.

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

오류, 버그, 질문

fxsaber , 2019.07.09 19:40

Time[FillArray1(Array1)] = 39501
Time[FillArray2(Array2)] = 30304

릴리스 버전을 실행하고 있습니다. 최적화가 활성화되었습니다.


위협 정적 어레이의 최적 크기를 경험적으로 찾았습니다.

 #define ARRAY_SIZE 256
 
fxsaber :
동적 리소스(예: Canvas)를 사용하는 사용자의 경우 이러한 방식으로 배열 채우기 속도를 높이는 것이 좋습니다.
수십 퍼센트의 가속.


위협 정적 어레이의 최적 크기를 경험적으로 찾았습니다.

mql5의 ArrayFill 과 비교하면 속도가 향상됩니까?

 

나는 전체 주제를 읽지 않았으며 아마도 이 질문에 대한 답이 이미 있을 것입니다. MT5는 그래픽 개체로 이해할 수 없게 동작합니다. 터미널은 한동안 닫혀 있고 개체는 이해할 수 없는 지점에 묶여 있습니다. 어떻게 처리합니까? 차트 창이 열려 있는 경우에는 어렵지 않습니다. 개인적으로 OnInit()에서 OnDeinit로의 전환을 추가했는데, 창에 북마크를 해두어도 문제가 해결되지 않습니다. 그리고 아마도 누군가가 MT5 제작자에게 소원을 "목소리"할 수 있는 곳을 알려줄 것입니다.

.

 
Alexander Lasygin :

나는 전체 주제를 읽지 않았으며 아마도 이 질문에 대한 답이 이미 있을 것입니다. MT5는 그래픽 개체로 이해할 수 없게 동작합니다. 터미널은 한동안 닫혀 있고 개체는 이해할 수 없는 지점에 묶여 있습니다. 어떻게 처리합니까? 차트 창이 열려 있는 경우에는 어렵지 않습니다. 개인적으로 OnInit() 에서 OnDeinit 로의 전환을 추가했지만 창에 북마크가 지정되어 있으면 문제가 해결되지 않습니다. 예, 아마도 누군가가 MT5 제작자에게 소원을 "음성"할 수 있는 곳을 알려줄 것입니다.

.

복제를 위한 정확한 데이터를 제공하십시오(예: 개체가 있는 차트 템플릿).

나는 당신의 객체가 여전히 표시기에 의해 그려지고 있다고 생각하며 prev_calculated를 잘못 추적하는 것은 이 표시기입니다.

 
Konstantin :

mql5의 ArrayFill 과 비교하면 속도가 향상됩니까?

나는 그렇게 생각하지 않는다.

 
fxsaber :

나는 그렇게 생각하지 않는다.

그렇다면 이미 생산적인 기능이 있다면 왜 자신만의 리사프를 발명할까요?