새로운 MetaTrader 5 플랫폼 빌드 5200: 확장된 OpenBLAS 지원 및 향상된 제어 기능

 

2025년 8월 1일(금)에 MetaTrader 5 플랫폼의 업데이트 버전이 출시됩니다.

이번 버전에서는 MQL5의 OpenBLAS 선형 대수 라이브러리에 대한 지원을 대폭 확장하여 약 30개의 새로운 함수를 추가했습니다. 이러한 개선 사항은 머신 러닝을 사용하는 Expert Advisor를 개발하는데 있어 더 많은 기능을 제공합니다.

또한 MQL5는 개발된 프로그램의 품질을 보장하기 위해 더욱 강력한 제어 기능을 제공합니다. 새로운 컴파일러 검사 및 제약 조건은 애플리케이션 동작의 잠재적인 오류를 방지하는 데 도움이 됩니다.

새로운 MetaTrader 5 플랫폼 빌드 5200: MQL5에서 확장된 OpenBLAS 지원 및 향상된 제어 기능

데스크톱 플랫폼에서는 운영 체제 설정에 따라 인터페이스를 자동으로 전환하는 기능도 도입하였습니다. 이제 수동으로 조정할 필요가 없습니다.


MetaTrader 5 클라이언트 터미널

  1. 터미널: Windows 설정에 따라 밝거나 어두운 테마를 자동으로 적용하는 기능이 추가되었습니다. 이 기능을 사용하려면 새 옵션을 선택합니다: 보기 \ 색상 테마 \ 시스템. 플랫폼이 시작될 때마다 시스템 테마를 감지하고 그에 따라 조정합니다.


    Windows 설정에 따라 밝거나 어두운 테마를 자동으로 적용하는 기능이 추가되었습니다.


  2. 터미널: 툴바가 기본창에서 분리 된 경우 발생하던 표시 문제를 수정했습니다.
  3. 터미널: 자산 섹션의 포트폴리오 청산 가치 계산을 수정했습니다. 특정 상품에 대한 포지션이 집계되지 않은 경우가 있었습니다.
  4. 터미널: 시장 심도에서 음수 가격이 표시되던 문제를 수정했습니다. 이제 올바르게 정렬되었습니다.
  5. 터미널: 심볼로 가격 내역 가져오기를 수정했습니다. 루트 폴더에 있는 심볼의 경우 이전에는 해당 명령을 사용할 수 없었을 수 있습니다.
  6. MQL5: 새로운 OpenBLAS 메서드가 추가되었습니다:

    행렬 환원

    • ReduceToHessenberg - 직교 유사도 변환을 통해 실수 또는 복잡한 일반 n×n 행렬 A를 상위 헤센베르그 형식 B로 축소합니다: Q**T * A * Q = H. LAPACK 함수 GEHRD.
    • ReflectHessenbergToQ - ReduceToHessenberg가 반환한 대로 n-1 차수 기본 리플렉터의 곱으로 정의되는 직교 행렬 Q를 생성합니다: Q = H(1) H(2) . . . H(n-1). LAPACK 함수 ORGHR.

    고유값과 고유 벡터

    • EigenHessenbergSchurQ - 슈어 분해 H = Z T Z**T에서 헤센버그 행렬 H와 행렬 T 및 Z의 고유값을 계산합니다. 여기서 T는 상위 준삼각형 행렬(슈어 형식)이고 Z는 슈어 벡터의 직교 행렬입니다. LAPACK 함수 HSEQR.

    선형 방정식

    • SylvesterEquationTriangular - 실제 준삼각형 또는 복소 삼각형 행렬에 대한 실베스터 방정식(op(A)*X + X*op(B) = scale*C 또는 op(A)*X - X*op(B) = scale*C)을 풉니다. 여기서 op(A) = A 또는 A**T 또는 A**H이고 A와 B가 모두 위쪽 삼각형인 경우 이 행렬은 실소 삼각형입니다. LAPACK 함수 TRSYL.
    • SylvesterEquationTriangularBlocked - 실제 준삼각형 또는 복소 삼각형 행렬에 대한 실베스터 방정식(op(A)*X + X*op(B) = scale*C 또는 op(A)*X - X*op(B) = scale*C, 여기서 op(A)는 A 또는 A**T 또는 A**H이고 A와 B는 모두 위 삼각형)을 풀 수 있습니다. LAPACK 함수 TRSYL3. 이것은 TRSYL의 블록(BLAS 레벨 3) 버전입니다. 최대 5배까지 빨라지지만 정확도는 떨어집니다.

    팩터링 계산

    • SylvesterEquationSchur - 실수 준삼각형 또는 복소 삼각형 행렬에 대한 실베스터 방정식을 풉니다: A*X + X*B = C 여기서 A와 B는 모두 위쪽 삼각형입니다. A는 m-by-m이고 B는 n-by-n이며 오른쪽의 C와 해법 X는 m-by-n입니다. LAPACK 함수 TRSYL.
    • SylvesterEquationSchurBlocked - 실수 준삼각형 또는 복소 삼각형 행렬에 대한 실베스터 방정식을 풉니다: A*X + X*B = C 여기서 A와 B는 모두 위쪽 삼각형입니다. A는 m-by-m이고 B는 n-by-n이며 오른쪽의 C와 해법 X는 m-by-n입니다. LAPACK 함수 TRSYL3. 이것은 TRSYL의 블록(BLAS 레벨 3) 버전입니다. 최대 5배까지 빨라지지만 정확도는 떨어집니다.

    행렬 규범 계산

    • MatrixNorm - 1-노름, 무한대 노름, 프로베니우스 노름 또는 일반 직사각형 행렬의 모든 요소 중 가장 큰 절대값의 값을 반환합니다. LAPACK 함수 LANGE.
    • MatrixNormGeTrid - 1-노름, 무한대 노름, 프로베니우스 노름 또는 일반 삼각형 행렬의 모든 요소의 최대 절대값을 반환합니다. LAPACK 함수 LANGT.
    • MatrixNormHessenberg - 1-노름, 무한대 노름, 프로베니우스 노름 또는 상위 헤센버그 행렬의 모든 요소의 최대 절대값을 반환합니다. LAPACK 함수 LANHS.
    • MatrixNormSy - 1-노름, 무한대 노름, 프로베니우스 노름 또는 실대칭 또는 복소 헤르미티안 행렬의 모든 요소의 최대 절대값을 반환합니다. LAPACK 함수 LANSY, LANHE
    • MatrixNormComplexSy - 1-노름, 무한대 노름, 프로베니우스 노름 또는 복소 대칭 행렬의 모든 요소의 최대 절대값을 반환합니다(헤르미티안 행렬이 아님). LAPACK 함수 LANSY.
    • MatrixNormSyTrid - 1-노름, 무한대 노름, 프로베니우스 노름 또는 실대칭 또는 복소 헤르미티아 삼각형 행렬의 모든 요소의 최대 절대값을 반환합니다. LAPACK 함수 LANST, LANHT.
    • MatrixNormTriangular - 1-노름, 무한대 노름, 프로베니우스 노름 또는 사다리꼴 m-by-n 또는 삼각형 행렬의 모든 요소의 최대 절대값을 반환합니다. LAPACK 함수 LANTR.

    매트릭스 분류

    • IsSymmetric - 정사각형 행렬이 대칭인지 확인합니다.
    • IsHermitian - 정사각형 복소 행렬이 Hermitian 행렬인지 확인합니다.
    • IsUpperTriangular - 정사각형 행렬이 상부 삼각형인지 확인합니다.
    • IsLowerTriangular - 정사각형 행렬이 하부 삼각형인지 확인합니다.
    • IsTrapezoidal - 직사각형(정사각형이 아닌) m-by-n 행렬이 상부 사다리꼴인지 하부 사다리꼴인지 확인합니다.
    • IsUpperHessenberg - 정사각형 행렬이 상부 헤센버그 행렬인지 확인합니다.
    • IsLowerHessenberg - 정사각형 행렬이 하부 헤센버그 행렬인지 확인합니다.
    • IsTridiagonal - 정사각형 행렬이 삼각형 행렬인지 확인합니다.
    • IsUpperBidiagonal - 정사각형 행렬이 상부 이각 행렬인지 확인합니다.
    • IsLowerBidiagonal - 정사각형 행렬이 하부 이각 행렬인지 확인합니다.
    • IsDiagonal - 정사각형 행렬이 대각선인지 확인합니다.
    • IsScalar - 정사각형 행렬이 스칼라 행렬인지 확인합니다.

  7. MQL5: 복잡한 행렬과 벡터에 대한 Conjugate 메서드를 추가했습니다. 이 메서드는 복소수의 허수 부분의 부호를 변경하고 수정된 행렬 또는 벡터를 반환합니다.
  8. MQL5: 메서드 숨김 규칙이 강화되었습니다. 파생 클래스에 기본 클래스에 있는 메서드와 이름이 같은 메서드가 포함된 경우 이제 기본적으로 파생 클래스 버전이 호출됩니다. 이제 명시적으로 베이스 클래스 메서드를 호출하려면 한정자가 필요합니다:
    struct A
      {
       int y;
      
       string func(double x)
         {
          return(__FUNCSIG__);
         }
      };
      
    struct B : public A
      {
       string func(int x)   // the method hides A::func
         {
          return(__FUNCSIG__);
         }
      };
      
    void OnStart(void)
      {
       B b;
       b.func(M_PI);          // according to new rules, it is a call to B::func
       b.A::func(M_PI);       // call the hidden method A::func
      }
    이 변경 사항은 코드의 가독성을 단순화하고 이전에는 컴파일러 경고만 동반했던 모호성을 제거합니다.

    이전에는 컴파일 시 경고가 표시되었습니다:
    더 이상 사용되지 않는 동작, 숨겨진 메서드를 호출하는 것은 향후 MQL 컴파일러 버전에서 비활성화됩니다.
    이 변경 사항은 이제 적용되었습니다.

    여러 빌드의 경우 매개변수에 따라 더 적합한 숨겨진 메서드를 사용할 수 있는 경우 로그에 경고가 계속 표시됩니다:
    메서드 숨김의 새로운 규칙으로 인해 호출이 '문자열 A::func(double)' 대신 '문자열 B::func(int)'로 해석됩니다.
       함수 'B::func' 선언 참조
       함수 'A::func' 선언 참조
    상수 값을 'double(3.141592653589793)'에서 'int(3)'로 잘라내기
  9. MQL5: 이제 동일한 범위 내에서 중복된 이름이 금지됩니다. 예를 들어 이전에는 단일 파일 내에 같은 이름의 입력 매개변수와 함수를 선언할 수 있었습니다. 이러한 복제는 더 이상 허용되지 않습니다:
    input int somename=42;
    
    int somename(int x)
      {
       return(42);
      }
  10. MQL5: 열거형에서 기본값에 대한 엄격한 유형 검사를 추가했습니다. 열거형을 허용하는 함수 매개변수의 경우 이제 값뿐만 아니라 정확한 유형도 일치해야 합니다:
    int somename(ENUM_TIMEFRAMES TF=PERIOD_CURRENT);
    
    int somename(ENUM_TIMEFRAMES TF=0)   // error, type mismatch for the default parameter value, despite having the same value
      {
       return(42);
      }
  11. MQL5: 이제 서로 다른 열거형에서 동일한 식별자를 사용하는 것이 금지됩니다. 한 열거형에 선언된 식별자는 더 이상 같은 범위 내의 다른 열거형에서 재사용할 수 없습니다:
    enum A
      {
       Value
      };
      
    enum B
      {
       Value  // error, name 'Value' is already used in enumeration A
      };
      
    void OnStart(void)
      {
       enum C
         {
          Value // OK, 'Value' is not used within the OnStart scope
         };
      }
    일치하는 이름을 다른 범위에서 사용할 수 있습니다.

  12. MQL5: 템플릿 초기화 함수에 대해 더 엄격한 요구 사항을 도입했습니다. 초기화 함수를 사용하여 행렬/벡터를 생성할 때 이제 다음의 기능이 비활성화됩니다:

    • 템플릿 함수에서 자동 유형 공제
    • 기본 매개변수 값

    이제 모든 템플릿 매개변수와 인수를 명시적으로 지정해야 합니다: 
    template<typename T>
    void Initializer(matrix<T>& mat,int method=0);
    
    matrix<double> A(10,10,Initializer,42);          // error, Initializer must be explicitly typed
    matrix<double> A(10,10,Initializer<double>);     // error, missing 'method' parameter (default values no longer supported)
    matrix<double> A(10,10,Initializer<double>,42);  // OK
  13. MQL5: ONNX 지원 개선. ulong 배열을 함수에 전달할 때 부호화된 유형의 암시적 변환을 추가하여 ONNX 모델과의 MQL5 통합을 간소화했습니다.
    OnnxSetInputShape( ... , ulong_array );
    OnnxSetOutputShape( ... , ulong_array );
  14. MQL5: 암시적 문자열 변환과 관련된 컴파일러 경고의 유형 표시를 수정했습니다.
  15. MQL5: Python 통합 패키지가 업데이트되었습니다. 업데이트를 설치하려면 다음 명령을 실행합니다:
    pip instal --upgrade MetaTrader5
  16. MetaEditor: MQL5 저장소에서 사용되는 '수정본으로 되돌리기' 명령이 수정되었습니다. 이제 되돌리기 작업 중에 발생할 수 있는 버전 간 충돌 평가가 작업 시작 전에 수행됩니다. 되돌릴 수 없는 경우 작업이 취소됩니다.
  17. 테스터: 거래소 계산 모드가 있는 계정에 대한 OrderCalcMargin 함수를 수정했습니다.
  18. 테스터: 다중 통화 Expert Advisor를 시각적으로 테스트하는 동안 차트 간 전환이 수정되었습니다.
  19. 업데이트된 사용자 인터페이스 번역.

MetaTrader 5 웹 터미널

  1. 데모 및 예비 계정 등록 중 이메일 인증이 수정되었습니다. 일부 경우 확인 코드 입력란이 표시되지 않는 경우가 있었습니다.
  2. 화웨이 디바이스에서 브라우저를 사용할 때 발생하는 계정 연결 문제를 수정했습니다.
  3. 일회용 비밀번호 사용 시 계정 연결이 수정되었습니다. 첫 번째 로그인 시도에서 OTP 입력란이 누락되는 경우가 있었습니다.


업데이트는 라이브 업데이트 시스템을 통해서 제공됩니다.