MetaTrader 5 플랫폼 업데이트는 2022년 8월 4일 목요일에 출시됩니다. 업데이트에는 다음 변경 사항이 포함됩니다.
터미널: 거래 계정에 처음으로 연결하는 동안 튜토리얼을 자동으로 여는 기능을 추가했습니다. 이것은 초보자가 거래와 관련한 기본 사항을 배우고 플랫폼의 기능을 탐색하는 데 도움이 됩니다. 이 자습서는 여러 섹션으로 나뉘며 각 섹션에서는 특정 주제에 대한 간략한 정보를 제공합니다. 트레이닝의 진행 상황은 파란색 선으로 표시됩니다.
터미널: '수익으로 마감'/'손실로 마감' 수정 벌크 실행. 이전에는 반대의 포지션이 존재하는 경우 반대의 포지션을 사용했습니다. 예를 들어 EURUSD에 대해 2개의 손실 중인 매수 포지션이 있고 EURUSD에 대해 1개의 수익 중인 매도 포지션이 있는 경우 '손실 마감' 벌크 실행을 하면 세 포지션 모두가 청산되었습니다. 매수와 매도는 '선택 청산'으로 청산되고 남아있는 매수는 평상시 처럼 청산됩니다. 이제 명령이 제대로 작동합니다: 수익 중이거나 손실중인 선택된 포지션만 청산합니다.
터미널: 음수인 역사적 가격의 표시 수정. 이러한 가격이 모든 기간에서 올바르게 표시됩니다.
터미널: 터미널의 시스템 리소스의 소비를 최적화하고 크게 줄였습니다.
터미널: 거래 상품에 대한 기본 데이터베이스가 업데이트되었습니다. 거래 종목에 사용할 수 있는 데이터 수집기의 수가 15개로 확장되었습니다. 사용자는 가장 인기 있는 경제관련 정보 수집기를 통해 더 많은 시세 틱커에 액세스할 수 있습니다.
글로벌 거래소에는 7000여 증권과 2000여 ETF가 상장돼 있습니다. 또한 거래소는 선물 및 기타 파생 상품을 제공합니다. MetaTrader 5 플랫폼은 거래소 상품과 관련한 거대한 데이터베이스에 액세스를 제공합니다. 관련된 데이터에 액세스하기 위해 사용자는 Market Watch에서 클릭 한 번으로 선택한 애그리게이터의 웹사이트로 갈 수 있습니다. 플랫폼은 각 금융 상품에 대한 다양한 정보 소스를 제공합니다.
터미널: 새로운 주문 창에서 손절매와 이익실현 표시를 수정했습니다. FIFO 계정의 경우 동일한 상품에 대한 기존 오픈 포지션의 스탑 레벨에 따라 스탑 레벨이 자동으로 설정됩니다. 이 절차는 FIFO 규칙을 준수하는 데 필요합니다.
우리는 알고리즘 트레이딩과 머신 러닝을 위한 MetaTrader 5 플랫폼의 기능을 계속 확장하고 있습니다. 전에는 행렬과 벡터라는 새로운 데이터 유형을 추가하였고 여기에서는 데이터 처리에 배열을 사용할 필요가 없었습니다. 이러한 데이터 유형을 사용하기 위한 70개 이상의 메소드가 MQL5에 추가되었습니다. 새로운 메서드를 사용하면 단일 작업으로 선형 대수 및 통계 계산을 수행할 수 있습니다. 코드 라인이 많지 않더라도 곱셈, 변환 및 방정식 시스템을 쉽게 구현할 수 있습니다. 최신 업데이트에는 수학 함수가 포함되어 있습니다.
수학 함수는 원래는 스칼라 값에 대한 관련 연산을 수행하도록 설계되었습니다. 이 빌드에서는 대부분의 함수를 행렬과 벡터에 적용할 수 있습니다. 다음을 포함합니다. MathAbs, MathArccos, MathArcsin, MathArctan, MathCeil, MathCos, MathExp, MathFloor, MathLog, MathLog10, MathMod, MathPow, MathRound, MathSin, MathSqrt, MathTan, MathExpm1, MathLog1p, MathArccosh, MathArcsinh, MathArctan. 이러한 연산은 행렬 또는 벡터의 요소별 처리를 의미합니다. 예시:
MathMod와 MathPow의 경우 두 번째 요소는 적절한 크기의 벡터/행렬 또는 스칼라일 수 있습니다.
다음 예제는 벡터에 수학 함수를 적용하여 표준 편차를 계산하는 방법을 보여줍니다.
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--- Use the initializing function to populate the vector
vector r(10, ArrayRandom); // Array of random numbers from 0 to 1//--- Calculate the average valuedouble avr=r.Mean(); // Array mean value
vector d=r-avr; // Calculate an array of deviations from the meanPrint("avr(r)=", avr);
Print("r=", r);
Print("d=", d);
vector s2=MathPow(d, 2); // Array of squared deviationsdouble sum=s2.Sum(); // Sum of squared deviations//--- Calculate standard deviation in two waysdouble std=MathSqrt(sum/r.Size());
Print(" std(r)=", std);
Print("r.Std()=", r.Std());
}
/*
avr(r)=0.5300302133243813
r=[0.8346201971495713,0.8031556138798182,0.6696676534318063,0.05386516922513505,0.5491195410016175,0.8224433118686484,...
d=[0.30458998382519,0.2731254005554369,0.1396374401074251,-0.4761650440992462,0.01908932767723626,0.2924130985442671, ...
std(r)=0.2838269732183663
r.Std()=0.2838269732183663
*///+------------------------------------------------------------------+//| Fills the vector with random values |//+------------------------------------------------------------------+void ArrayRandom(vector& v)
{
for(ulong i=0; i<v.Size(); i++)
v[i]=double(MathRand())/32767.;
}
MQL5: 템플릿 함수에서 해당 행렬, matrixf, vector과 vectorf 유형 대신에 matrix<double>, matrix<float>, vector<double>, vector<float> 표기법에 대한 지원이 추가되었습니다.
MQL5: float유형의 연산에 대한 수학 함수가 개선되었습니다. 수학 함수를 'float' 행렬 및 벡터에 적용할 수 있도록 새로 구현된 기능은 'float' 스칼라에 적용된 수학 함수가 개선되게 했습니다. 이전에는 이러한 함수 매개변수가 무조건 'double' 유형으로 캐스트된 다음 수학 함수의 해당 구현이 호출되었으며 결과는 'float' 유형으로 다시 캐스트 되었습니다. 이제 추가적으로 타입의 캐스팅 없이 작업이 구현됩니다.
다음 예는 수학적으로 사인을 계산할 때의 차이를 보여줍니다.
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--- Array of random numbers from 0 to 1
vector d(10, ArrayRandom);
for(ulong i=0; i<d.Size(); i++)
{
double delta=MathSin(d[i])-MathSin((float)d[i]);
Print(i,". delta=",delta);
}
}
/*
0. delta=5.198186103783087e-09
1. delta=8.927621308885136e-09
2. delta=2.131878673594656e-09
3. delta=1.0228555918923021e-09
4. delta=2.0585739779477308e-09
5. delta=-4.199390279957527e-09
6. delta=-1.3221741035351897e-08
7. delta=-1.742922250969059e-09
8. delta=-8.770715820283215e-10
9. delta=-1.2543186267421902e-08
*///+------------------------------------------------------------------+//| Fills the vector with random values |//+------------------------------------------------------------------+void ArrayRandom(vector& v)
{
for(ulong i=0; i<v.Size(); i++)
v[i]=double(MathRand())/32767.;
}
MQL5: 행렬 및 벡터에 대한 활성화 및 파생 메서드 추가:
AF_ELU
지수 선형 단위
AF_EXP
지수
AF_GELU
가우스 오차 선형 단위
AF_HARD_SIGMOID
하드 시그모이드
AF_LINEAR
리니어
AF_LRELU
Leaky REctified Linear Unit
AF_RELU
정류 리니어 유닛
AF_SELU
스케일된 지수 선형 단위
AF_SIGMOID
시그모이드
AF_SOFTMAX
소프트맥스
AF_SOFTPLUS
소프트플러스
AF_SOFTSIGN
소프트사인
AF_SWISH
Swish
AF_TANH
쌍곡선 탄젠트
AF_TRELU
Thresholded REctified Linear Unit
신경망 활성화 함수는 가중치 입력 신호의 합이 네트워크 수준에서 노드 출력의 신호로 변환되는 방식을 결정합니다. 활성화 함수의 선택은 신경망 성능에 큰 영향을 미칩니다. 모델의 다른 부분은 다른 활성화 함수를 사용할 수 있습니다. 알려진 모든 함수 외에도 MQL5는 파생적인 것들을 제공합니다. 파생 함수를 사용하면 학습동안 일어난 오류를 기반으로 조정을 빠르게 계산할 수 있습니다.
MQL5: 행렬 및 벡터에서 손실 함수가 추가되었습니다. 손실 함수는 다음과 같은 매개변수가 있습니다.
LOSS_MSE
평균 제곱 오차
LOSS_MAE
평균 절대 오차
LOSS_CCE
범주형 교차엔트로피
LOSS_BCE
이진 교차 엔트로피
LOSS_MAPE
중간값 절대 백분율 오류
LOSS_MSLE
평균 제곱 로그 오류
LOSS_KLD
Kullback-Leibler 다이버전스
LOSS_COSINE
코사인 유사성/근접성
LOSS_POISSON
푸아송
LOSS_HINGE
힌지
LOSS_SQ_HINGE
제곱 힌지
LOSS_CAT_HINGE
범주형 힌지
LOSS_LOG_COSH
로그 쌍곡선 코사인
LOSS_HUBER
후버
손실 함수는 모델이 실제 값을 얼마나 잘 예측하는지를 평가합니다. 모델 구성은 각 단계에서 함수 값의 최소화를 목표로 합니다. 접근 방식은 특정 데이터 세트에 따라 다릅니다. 또한 손실 함수는 무게와 오프셋에 따라 달라질 수 있습니다. 손실 함수는 1차원이며 신경망에 대한 일반적인 평가를 제공하기 때문에 벡터가 아닙니다.
행렬과 벡터와 관련해 matrix::CompareByDigits 과 vector::CompareByDigits 메서드를 추가했습니다. 두 행렬/벡터의 요소를 유효 자릿수까지 비교합니다.
문자열과 관련한 MathMin와 MathMax함수에 대한 지원이 추가되었습니다. 함수는 사전식 비교를 사용합니다. 문자는 대소문자를 구분하여 알파벳순으로 비교됩니다.
MQL5: 최대 OpenCL 개체 수가 256개에서 65536개로 증가했습니다. OpenCL 개체 핸들은CLContextCreate, CLBufferCreate와 CLProgramCreate함수를 사용하여 MQL5 프로그램에서 생성됩니다. 이전의 핸들을 256개로 제한한 것은 머신 러닝 메서드를 효율적으로 사용하기에 충분하지 않았습니다.
MQL5: 'double' 지원 없이 그래픽 카드에서 OpenCL을 사용할 수 있는 기능이 추가되었습니다. 많은 작업에서 float를 사용한 계산이 사용되었지만 이전에는 MQL5 프로그램에서 Double을 지원하는 GPU만 허용되었습니다. float 유형은 공간을 덜 차지하므로 원론적으로 병렬 컴퓨팅의 기본으로 간주됩니다. 따라서 이전의 요구 사항은 없어졌습니다.
특정 작업에 대한 double 지원과 함께 GPU의 필수 사용을 설정하려면CLContextCreate호출에서 CL_USE_GPU_DOUBLE_ONLY를 사용하십시오.
int cl_ctx;
//--- Initializing the OpenCL contextif((cl_ctx=CLContextCreate(CL_USE_GPU_DOUBLE_ONLY))==INVALID_HANDLE)
{
Print("OpenCL not found");
return;
}
전송된 데이터는 검증됩니다. 유형, 가격 및 볼륨 데이터는 각 요소에 대해 지정되어야 합니다. MqlBookInfo.volume 및 MqlBookInfo.volume_real은 0 또는 음수가 아니어야 합니다. 두 볼륨이 모두 음수이면 오류로 간주됩니다. 볼륨 유형 중 하나 또는 둘 다를 지정할 수 있지만 시스템은 표시되거나 양수인 유형을 사용합니다.
MetaTrader 5 플랫폼 업데이트는 2022년 8월 4일 목요일에 출시됩니다. 업데이트에는 다음 변경 사항이 포함됩니다.
글로벌 거래소에는 7000여 증권과 2000여 ETF가 상장돼 있습니다. 또한 거래소는 선물 및 기타 파생 상품을 제공합니다. MetaTrader 5 플랫폼은 거래소 상품과 관련한 거대한 데이터베이스에 액세스를 제공합니다. 관련된 데이터에 액세스하기 위해 사용자는 Market Watch에서 클릭 한 번으로 선택한 애그리게이터의 웹사이트로 갈 수 있습니다. 플랫폼은 각 금융 상품에 대한 다양한 정보 소스를 제공합니다.우리는 알고리즘 트레이딩과 머신 러닝을 위한 MetaTrader 5 플랫폼의 기능을 계속 확장하고 있습니다. 전에는 행렬과 벡터라는 새로운 데이터 유형을 추가하였고 여기에서는 데이터 처리에 배열을 사용할 필요가 없었습니다. 이러한 데이터 유형을 사용하기 위한 70개 이상의 메소드가 MQL5에 추가되었습니다. 새로운 메서드를 사용하면 단일 작업으로 선형 대수 및 통계 계산을 수행할 수 있습니다. 코드 라인이 많지 않더라도 곱셈, 변환 및 방정식 시스템을 쉽게 구현할 수 있습니다. 최신 업데이트에는 수학 함수가 포함되어 있습니다.
수학 함수는 원래는 스칼라 값에 대한 관련 연산을 수행하도록 설계되었습니다. 이 빌드에서는 대부분의 함수를 행렬과 벡터에 적용할 수 있습니다. 다음을 포함합니다. MathAbs, MathArccos, MathArcsin, MathArctan, MathCeil, MathCos, MathExp, MathFloor, MathLog, MathLog10, MathMod, MathPow, MathRound, MathSin, MathSqrt, MathTan, MathExpm1, MathLog1p, MathArccosh, MathArcsinh, MathArctan. 이러한 연산은 행렬 또는 벡터의 요소별 처리를 의미합니다. 예시:
MathMod와 MathPow의 경우 두 번째 요소는 적절한 크기의 벡터/행렬 또는 스칼라일 수 있습니다.
다음 예제는 벡터에 수학 함수를 적용하여 표준 편차를 계산하는 방법을 보여줍니다.
MQL5: float유형의 연산에 대한 수학 함수가 개선되었습니다. 수학 함수를 'float' 행렬 및 벡터에 적용할 수 있도록 새로 구현된 기능은 'float' 스칼라에 적용된 수학 함수가 개선되게 했습니다. 이전에는 이러한 함수 매개변수가 무조건 'double' 유형으로 캐스트된 다음 수학 함수의 해당 구현이 호출되었으며 결과는 'float' 유형으로 다시 캐스트 되었습니다. 이제 추가적으로 타입의 캐스팅 없이 작업이 구현됩니다.
다음 예는 수학적으로 사인을 계산할 때의 차이를 보여줍니다.
손실 함수는 모델이 실제 값을 얼마나 잘 예측하는지를 평가합니다. 모델 구성은 각 단계에서 함수 값의 최소화를 목표로 합니다. 접근 방식은 특정 데이터 세트에 따라 다릅니다. 또한 손실 함수는 무게와 오프셋에 따라 달라질 수 있습니다. 손실 함수는 1차원이며 신경망에 대한 일반적인 평가를 제공하기 때문에 벡터가 아닙니다.
특정 작업에 대한 double 지원과 함께 GPU의 필수 사용을 설정하려면CLContextCreate호출에서 CL_USE_GPU_DOUBLE_ONLY를 사용하십시오.
volume=-1 && volume_real=2 — volume_real=2가 사용됩니다.
volume=3 && volume_real=0 — volume=3이 사용됩니다.
증가된 정밀도 볼륨 MqlBookInfo.volume_real은 MqlBookInfo.volume보다 우선 순위가 높습니다. 따라서 두 값이 모두 지정되고 유효한 경우 volume_real이 사용됩니다.
시장 심도의 요소 중 하나라도 잘못 설명된 경우 시스템은 전송된 상태를 완전히 폐기합니다.
업데이트는 라이브 업데이트 시스템을 통해 제공됩니다.