2025년 9월 5일 금요일, MetaTrader 5 플랫폼의 업데이트된 버전이 출시됩니다.
이 빌드에서는 새로운 함수 세트를 사용하여 MQL5의OpenBLAS 선형 대수 라이브러리를 계속 확장합니다. 이러한 방법은 개발자에게 예비 행렬 준비부터 정확하고 안정적인 스펙트럼 계산까지 완전한 변환 주기를 제공합니다.
또한 MQL5는 이제 클래스와 구조체에서 상속과 메서드 오버로딩에 대한 제어를 더욱 엄격하게 적용합니다. 새로운 상속 동작과 컴파일러 제약 조건은 애플리케이션 논리에서 잠재적인 오류를 방지하는 데 도움이 됩니다.
또한 Algo Forge 프로젝트에서 파일 처리 기능을 개선하여 해시 계산을 가속화하고 파일 수정에 대한 감지 오류를 없앴습니다.
서비스 웹사이트에 포괄적인MQL5 Algo Forge 문서가 게시되었습니다. 이는 알고리즘 트레이더가 Git 시스템을 사용하는 모든 기능과 이점을 명확하게 보여줍니다. 즉, 프로젝트를 탐색하는 방법, 흥미로운 출판물을 팔로우 하는 방법, 협업하는 방법, 저장소를 복제하는 방법을 보여줍니다.
MetaTrader 5 클라이언트 터미널
터미널: 거래 심볼 사양에서 마진 설정의 표시가 수정되었습니다. 이전에는 변동 레버리지를 사용했을 때(예: 계좌 포지션 볼륨을 기준으로 계산) 계약 사양에서 마진 매개변수가 잘못 표시될 수 있었습니다.
터미널: 음수 가격이 적용된 심볼에 대한 주문 정렬이 수정되었습니다. 이제 양수, 음수, 0 가격이 적힌 주문이 올바르게 올바른 순서로 표시됩니다.
터미널: 터미널 사용자 가이드에 새로운 섹션인 히스토리 데이터를 다운로드하는 방법이 추가되었습니다. 전략 테스터가 거래 히스토리와 어떻게 연계되는지 이해하는 데 필요한 핵심 사항을 요약한 것입니다. 계산의 안정성을 보장하기 위해 테스터는 항상 '시작 전 기록 버퍼'를 로드 합니다:
D1 이하 - 전년도 연도 초부터. 이렇게 하면 최소 1년의 기록이 제공됩니다. 예: 테스트 시작일이 2023년 01월 03일인 경우 터미널은 2022년 01월 01일부터 터미널 데이터를 다운로드합니다. 이는 테스트 시작 전 14개월에 해당합니다.
W1 - 주간 바 100개 이상(~2년).
MN1 - 월간 100개 이상의 바(~8년).
사용 가능한 히스토리가 충분하지 않은 경우에는 테스터는 요구 사항을 충족하는 가장 가까운 시점으로 실제 시작 날짜를 자동으로 앞당깁니다.
이러한 경우 테스팅은 사용자가 지정한 날짜보다 늦게 시작됩니다. 테스터 로그에 관련 메시지가 표시됩니다. 예를 들면 다음과 같습니다:
start time changed to2024.03.1500:00to provide data at beginning
MQL5: 정사각 행렬에 대한 기능을 확장하여 Matrix Balance섹션에 5개의 새로운 OpenBLAS 메서드를 추가했습니다. 새로운 함수 세트는 다음을 제공합니다.
고유값 계산의 정확도를 높이기 위한 행렬 밸런싱.
고유벡터의 역변환.
직교 행렬 생성을 포함한 Hessenberg 형태와 Schur 분해로의 축소.
이러한 메서드는 개발자에게 예비 매트릭스 준비부터 정확하고 안정적인 스펙트럼 계산까지 완전한 변환 주기를 제공합니다.
이러한 메서드는 LAPACK 알고리즘(GEBAL, GEBAK, GEHRD, ORGHR, HSEQR)을 기반으로 하며 높은 성능과 안정성을 보장합니다.
MatrixBalance: 행과 열을 순열하고 대각선 유사 변환을 적용하여 일반적인 실수 또는 복소수 행렬의 균형을 맞춥니다. 균형을 맞추면 행렬의 1-노름이 줄어들고 계산된 고유값 과/또는 고유벡터의 정확도가 향상될 수 있습니다(LAPACK 함수GEBAL).
EigenVectorsBackward: 균형 행렬의 계산된 고유 벡터에 대한 역방향 변환을 통해 실수 또는 복소수 일반 행렬의 오른쪽 또는 왼쪽 고유 벡터를 형성합니다(LAPACK 함수GEBAK).
이전에는 파생 클래스나 구조체가 기본 클래스와 같은 이름의 메서드를 정의하는 경우오버로딩이 수행되었습니다. 즉, 모든 버전(부모와 자식 모두)을 파생 클래스에서 사용할 수 있었습니다. 이제 파생 클래스에서 같은 이름을 가진 메서드는 기본 클래스 메서드를 숨깁니다(메서드 숨김).
숨겨진 기본 클래스 메서드를 호출하려면 호출할 때 해당 범위를 명시적으로 지정해야 합니다.
class Base
{
public:
voidPrint(int x) { ::Print("Base int: ", x); }
voidPrint(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
voidPrint(string s){ ::Print("Derived string: ", s); }
};
voidOnStart()
{
Derived d;
d.Print("text"); // call of Derived::Print(string)
d.Print(10); // ATTENTION! Calling Derived::Print(string) since Base::Print is hidden (inaccessible)
d.Base::Print(10); // explicit call to hidden parent method
}
MQL5 컴파일러는 숨겨진 기본 메서드가 사용 가능한 파생 메서드보다 호출 매개변수에 더 잘 맞는 경우 경고를 내보냅니다. 위 코드 d.Print(10)에 대한 예:
메서드 숨기기의 새로운 규칙으로 인해 호출이 'void Base::Print(int)' 대신 'void Derived::Print(string)'으로 해결됩니다. 'Derived::Print' 함수 선언을 참조하세요. 'Base::Print' 함수 선언을 참조하세요. '숫자'에서 '문자열'로의 암시적 변환
MQL5: 기본 클래스 메서드 오버로드를 복원하기 위해using 연산자를 추가했습니다.
새로운 동작을 제어하기 위해 MQL5에서는 'using' 연산자를 도입했습니다. 이를 통해 기본 유형의 메서드 오버로드를 모두클래스의 범위나 구조체로 "끌어올" 수 있습니다.
class Base
{
protected:
voidPrint(int x) { ::Print("Base int: ", x); }
voidPrint(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
voidPrint(string s){ ::Print("Derived string: ", s); }
using Base::Print; // return Print overloads from Base
};
voidOnStart()
{
Derived d;
d.Print("text"); // Derived::Print(string)
d.Print(42); // Base::Print(int)
d.Print(3.14); // Base::Print(double)
}
'using Base::Print;'가 제거되면 d.Print(42) 및 d.Print(3.14)에 대한 호출을 사용할 수 없게 됩니다. Derived::Print(string)만 유지됩니다.
또한 이 예제에서는 기본 클래스의 보호된 메서드가 파생 클래스에서 접근 가능해지는 것을 볼 수 있습니다(가시성이 protected에서 public으로 변경됨).
이를 통해 개발자는 클래스 계층 구조를 보다 유연하고 예측 가능하게 제어할 수 있으며 파생된 유형에서 어떤 기본 클래스 메서드 오버로드가 계속 액세스 가능해야 하는지를 정확하게 정의할 수 있습니다.
MetaEditor: Algo Forge에서 Git 작업을 위한 SHA-1 해시 계산을 가속화했습니다. 대량 작업의 경우 성능이 40% 이상 향상됩니다.
MetaEditor: Git 작업에서 파일 수정 검사가 수정되었습니다. 파일의 수정 시간만 변경되었고 파일 내용이 동일하게 유지되는 경우 해당 파일은 더 이상 수정된 것으로 처리되지 않습니다. 이를 통해 잘못된 감지가 사라지고 원격 저장소와의 충돌이 방지됩니다.
다른 개발자의 프로젝트 복제 forge.mql5.io에서 복제하려는 프로젝트를 열고 Fork를 클릭합니다. 포크의 이름과 설명을 입력하고 저장합니다.
MetaEditor에서 동일한 MQL5 계정을 사용하여 Navigator에서새로 고침 명령을 실행합니다. 포크가 공유 프로젝트 폴더에 나타납니다. Git Clone을 사용하여 Algo Forge에서 다운로드하세요. 프로젝트 파일 뿐만 아니라 전체 커밋 기록과 모든 브랜치도 받게 됩니다. 즉, 복제된 프로젝트의 전체 기록을 유지하면서도 포크 작업을 계속할 수 있습니다.
2025년 9월 5일 금요일, MetaTrader 5 플랫폼의 업데이트된 버전이 출시됩니다.
이 빌드에서는 새로운 함수 세트를 사용하여 MQL5의OpenBLAS 선형 대수 라이브러리를 계속 확장합니다. 이러한 방법은 개발자에게 예비 행렬 준비부터 정확하고 안정적인 스펙트럼 계산까지 완전한 변환 주기를 제공합니다.
또한 MQL5는 이제 클래스와 구조체에서 상속과 메서드 오버로딩에 대한 제어를 더욱 엄격하게 적용합니다. 새로운 상속 동작과 컴파일러 제약 조건은 애플리케이션 논리에서 잠재적인 오류를 방지하는 데 도움이 됩니다.
또한 Algo Forge 프로젝트에서 파일 처리 기능을 개선하여 해시 계산을 가속화하고 파일 수정에 대한 감지 오류를 없앴습니다.
서비스 웹사이트에 포괄적인MQL5 Algo Forge 문서가 게시되었습니다. 이는 알고리즘 트레이더가 Git 시스템을 사용하는 모든 기능과 이점을 명확하게 보여줍니다. 즉, 프로젝트를 탐색하는 방법, 흥미로운 출판물을 팔로우 하는 방법, 협업하는 방법, 저장소를 복제하는 방법을 보여줍니다.
MetaTrader 5 클라이언트 터미널
이러한 메서드는 개발자에게 예비 매트릭스 준비부터 정확하고 안정적인 스펙트럼 계산까지 완전한 변환 주기를 제공합니다.
이러한 메서드는 LAPACK 알고리즘(GEBAL, GEBAK, GEHRD, ORGHR, HSEQR)을 기반으로 하며 높은 성능과 안정성을 보장합니다.
이전에는 파생 클래스나 구조체가 기본 클래스와 같은 이름의 메서드를 정의하는 경우오버로딩이 수행되었습니다. 즉, 모든 버전(부모와 자식 모두)을 파생 클래스에서 사용할 수 있었습니다. 이제 파생 클래스에서 같은 이름을 가진 메서드는 기본 클래스 메서드를 숨깁니다(메서드 숨김).
숨겨진 기본 클래스 메서드를 호출하려면 호출할 때 해당 범위를 명시적으로 지정해야 합니다. MQL5 컴파일러는 숨겨진 기본 메서드가 사용 가능한 파생 메서드보다 호출 매개변수에 더 잘 맞는 경우 경고를 내보냅니다. 위 코드 d.Print(10)에 대한 예:
'Derived::Print' 함수 선언을 참조하세요.
'Base::Print' 함수 선언을 참조하세요.
'숫자'에서 '문자열'로의 암시적 변환
새로운 동작을 제어하기 위해 MQL5에서는 'using' 연산자를 도입했습니다. 이를 통해 기본 유형의 메서드 오버로드를 모두클래스의 범위나 구조체로 "끌어올" 수 있습니다.
'using Base::Print;'가 제거되면 d.Print(42) 및 d.Print(3.14)에 대한 호출을 사용할 수 없게 됩니다. Derived::Print(string)만 유지됩니다.
또한 이 예제에서는 기본 클래스의 보호된 메서드가 파생 클래스에서 접근 가능해지는 것을 볼 수 있습니다(가시성이 protected에서 public으로 변경됨).
이를 통해 개발자는 클래스 계층 구조를 보다 유연하고 예측 가능하게 제어할 수 있으며 파생된 유형에서 어떤 기본 클래스 메서드 오버로드가 계속 액세스 가능해야 하는지를 정확하게 정의할 수 있습니다.
다른 개발자의 프로젝트 복제
forge.mql5.io에서 복제하려는 프로젝트를 열고 Fork를 클릭합니다. 포크의 이름과 설명을 입력하고 저장합니다.
MetaEditor에서 동일한 MQL5 계정을 사용하여 Navigator에서새로 고침 명령을 실행합니다. 포크가 공유 프로젝트 폴더에 나타납니다. Git Clone을 사용하여 Algo Forge에서 다운로드하세요. 프로젝트 파일 뿐만 아니라 전체 커밋 기록과 모든 브랜치도 받게 됩니다. 즉, 복제된 프로젝트의 전체 기록을 유지하면서도 포크 작업을 계속할 수 있습니다.
웹 터미널
업데이트는 라이브 업데이트 시스템을 통해서 제공됩니다.