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배까지 빨라지지만 정확도는 떨어집니다.
MQL5: 복잡한 행렬과 벡터에 대한 Conjugate 메서드를 추가했습니다. 이 메서드는 복소수의 허수 부분의 부호를 변경하고 수정된 행렬 또는 벡터를 반환합니다.
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__);
}
};
voidOnStart(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)'로 잘라내기
MQL5: 이제 동일한 범위 내에서 중복된 이름이 금지됩니다. 예를 들어 이전에는 단일 파일 내에 같은 이름의 입력 매개변수와 함수를 선언할 수 있었습니다. 이러한 복제는 더 이상 허용되지 않습니다:
inputint somename=42;
int somename(int x)
{
return(42);
}
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);
}
MQL5: 이제 서로 다른 열거형에서 동일한 식별자를 사용하는 것이 금지됩니다. 한 열거형에 선언된 식별자는 더 이상 같은 범위 내의 다른 열거형에서 재사용할 수 없습니다:
enum A
{
Value
};
enum B
{
Value // error, name 'Value' is already used in enumeration A
};
voidOnStart(void)
{
enum C
{
Value // OK, 'Value' is not used within the OnStart scope
};
}
일치하는 이름을 다른 범위에서 사용할 수 있습니다.
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
MQL5: ONNX 지원 개선. ulong 배열을 함수에 전달할 때 부호화된 유형의 암시적 변환을 추가하여 ONNX 모델과의 MQL5 통합을 간소화했습니다.
2025년 8월 1일(금)에 MetaTrader 5 플랫폼의 업데이트 버전이 출시됩니다.
이번 버전에서는 MQL5의 OpenBLAS 선형 대수 라이브러리에 대한 지원을 대폭 확장하여 약 30개의 새로운 함수를 추가했습니다. 이러한 개선 사항은 머신 러닝을 사용하는 Expert Advisor를 개발하는데 있어 더 많은 기능을 제공합니다.
또한 MQL5는 개발된 프로그램의 품질을 보장하기 위해 더욱 강력한 제어 기능을 제공합니다. 새로운 컴파일러 검사 및 제약 조건은 애플리케이션 동작의 잠재적인 오류를 방지하는 데 도움이 됩니다.
데스크톱 플랫폼에서는 운영 체제 설정에 따라 인터페이스를 자동으로 전환하는 기능도 도입하였습니다. 이제 수동으로 조정할 필요가 없습니다.
MetaTrader 5 클라이언트 터미널
행렬 환원
고유값과 고유 벡터
선형 방정식
팩터링 계산
행렬 규범 계산
매트릭스 분류
이 변경 사항은 코드의 가독성을 단순화하고 이전에는 컴파일러 경고만 동반했던 모호성을 제거합니다.
이전에는 컴파일 시 경고가 표시되었습니다:
여러 빌드의 경우 매개변수에 따라 더 적합한 숨겨진 메서드를 사용할 수 있는 경우 로그에 경고가 계속 표시됩니다:
함수 'B::func' 선언 참조
함수 'A::func' 선언 참조
상수 값을 'double(3.141592653589793)'에서 'int(3)'로 잘라내기
일치하는 이름을 다른 범위에서 사용할 수 있습니다.
이제 모든 템플릿 매개변수와 인수를 명시적으로 지정해야 합니다:
OnnxSetOutputShape( ... , ulong_array );
MetaTrader 5 웹 터미널
업데이트는 라이브 업데이트 시스템을 통해서 제공됩니다.