This update fixes an error in the calculation of triple swaps in the strategy tester, which occurred under certain combinations of testing conditions. Additionally, a number of minor enhancements and fixes have been implemented to further improve the platform stability.
matrix<complex<T>> matrix<complex<T>>::TransposeConjugate(void) const;The method returns a new conjugate-transposed matrix in which the elements of the original matrix are transposed and converted to their complex conjugates.
int matrix<T>::CompareEqual(const matrix<T>& mat) constThe return values are:
pip install --upgrade MetaTrader5
Function |
Action |
---|---|
Singular Value Decomposition, divide-and-conquer algorithm; considered the fastest among other SVD algorithms (lapack function GESDD). |
|
Singular Value Decomposition, QR algorithm; considered a classical SVD algorithm (lapack function GESVD). |
|
Singular Value Decomposition, QR with pivoting algorithm (lapack function GESVDQ). |
|
Singular Value Decomposition, bisection algorithm (lapack function GESVDX). |
|
Singular Value Decomposition, Jacobi high-level algorithm (lapack function GEJSV). |
|
Singular Value Decomposition, Jacobi low-level algorithm (lapack function GESVJ). The method computes small singular values and their singular vectors with much greater accuracy than other SVD routines in certain cases. |
|
Singular Value Decomposition, divide-and-conquer algorithm for bidiagonal matrices (lapack function BDSVDX). |
|
Singular Value Decomposition, bisection algorithm for bidiagonal matrices (lapack function BDSVDX). |
|
Compute eigenvalues and eigenvectors of a regular square matrix using the classical algorithm (lapack function GEEV). |
|
Compute eigenvalues and eigenvectors of a symmetric or Hermitian (complex conjugate) matrix using the divide-and-conquer algorithm (lapack functions SYEVD, HEEVD). |
|
A method function for calculating the relative contributions of spectral components based on their eigenvalues |
|
A method function for calculating reconstructed and predicted data using spectral components of the input time series. |
|
A method function for calculating reconstructed components of the input time series and their contributions. |
|
A method function for calculating the reconstructed time series using the first component_count components. |
We have released MetaTrader 5 build 4410, featuring several important improvements. The cloud-based Strategy Tester has been updated to eliminate possible terminal shutdown for some users upon launching the testing process. The Web Terminal is now more stable, with fixes for browser compatibility checks and demo account opening procedures.
Terminal
MQL5
Web Terminal
MetaTrader 5 for Android
Terminal
MetaTester
Web Terminal
MetaEditor
Terminal
MQL5
MetaTrader 5 Web Terminal
vector<double/complex> operator[](const int i) const; vector<double/complex> operator[](const ulong i) const;They have been replaced by a single method with a constant return value:
const vector<double/complex> operator[](const ulong i) const;This modification will assist in capturing incorrect use of the result in place as in the new Alglib version, the code mat[row][col]=x operates differently from the old version. Previously, this indicated writing to a matrix. Now, the value is written to a temporary object vector<double/complex>, which is immediately destroyed after recording.
bool ArrayToFP16(ushort &dst_array[],const float &src_array[],ENUM_FLOAT16_FORMAT fmt); bool ArrayToFP16(ushort &dst_array[],const double &src_array[],ENUM_FLOAT16_FORMAT fmt); bool ArrayToFP8(uchar &dst_array[],const float &src_array[],ENUM_FLOAT8_FORMAT fmt); bool ArrayToFP8(uchar &dst_array[],const double &src_array[],ENUM_FLOAT8_FORMAT fmt); bool ArrayFromFP16(float &dst_array[],const ushort &src_array[],ENUM_FLOAT16_FORMAT fmt); bool ArrayFromFP16(double &dst_array[],const ushort &src_array[],ENUM_FLOAT16_FORMAT fmt); bool ArrayFromFP8(float &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt); bool ArrayFromFP8(double &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt);Since real number formats for 16 and 8 bits may differ, the "fmt" parameter in the conversion functions must indicate which number format needs to be processed. For 16-bit versions, the new enumeration NUM_FLOAT16_FORMAT is used, which currently has the following values:
Improved display of margin requirements in contract specifications. Now, in addition to ratios and initial parameters for calculations, specifications display the final margin values. If the margin amount depends on the position volume, the corresponding levels will be shown in the dialog.
We are happy to announce the release of a new book entitled Neural Networks for algorithmic trading in MQL5. From this book, you will learn how to use artificial intelligence in trading robots for the MetaTrader 5 platform. The author, Dmitry Gizlyk, is a hands-on neural network professional; he has written more than a dozen of articles on this topic. Now, with the support of MetaQuotes, all his valuable knowledge is conveniently collected in one book. The book gradually introduces the reader to neural network basics and their application in algorithmic trading. You will learn to create your own AI application, train it and extend its functionality.
The book is freely available online, under the NeuroBook section of the MQL5 Algo Trading community website. It consists of seven parts:
The book is intended for advanced users who already know how to write programs in MQL5 and Python. If you are beginning your algorithmic trading journey, we recommend starting with the book "MQL5 programming for traders" and with the language documentation.
Terminal
MQL5
MetaEditor
Tester
Web Terminal
We have released the most comprehensive guide to MQL5 programming, authored by experienced algorithmic trader Stanislav Korotky with MetaQuotes' support.
The book is intended for programmers of all levels. Beginners will learn the fundamentals as the book introduces key development tools and basic programming concepts. With this material, you can create, compile, and run your first application in the MetaTrader 5 trading platform. Users with experience in other programming languages can immediately advance to the applied part related to creating trading robots and analytical applications in MQL5.
The book is freely available online, under the "Book" section of the MQL5.community website. It consists of seven parts:
The book provides numerous source code examples. Following the explanation, you can implement your own applications in the built-in editor and instantly view program execution results in the platform. The source codes are available in the public project \MQL5\Shared Projects\MQL5Book and in the Code Base.
Start learning MQL5 right now and discover the world of professional algorithmic trading. The knowledge gained will help you bring your ideas to life. You can also apply them in a commercial environment by developing and selling applications through the Market and taking on programming orders in the Freelance.
We have prepared special trading platform installers quite some time ago. The installer for macOS is a full-fledged wizard with which the app is installed seamlessly, just like a native one. For Linux, we provide a script that can be downloaded and launched with a single command.
The installers perform all the required steps: they identify the user's system, download and install the latest Wine version, configure it, and then install MetaTrader inside it. All steps are completed in the automated mode, and you can start using the platform immediately after installation.
The installer links are available on the https://www.metatrader5.com website and in the trading platform's Help menu:
For macOS: Check your Wine version
We have recently completely updated the macOS installer, incorporating numerous improvements. If you are already using MetaTrader on macOS, please check the current Wine version, which is displayed in the terminal log upon startup:
If your Wine version is below 8.0.1, we strongly recommend removing
the old platform along with the Wine prefix in which it is installed.
You can delete the platform as usual by moving it from the
"Applications" section to the bin. The Wine prefix can be deleted using
Finder. Select the Go > Go to Folder menu and enter the directory
name: ~/Library/Application Support/. Go to this directory and delete
the following folders based on the installed MetaTrader version:
After that, reinstall the terminal using our installers.
You no longer need to search for manual installation instructions or use third-party solutions. You can install the platform in a couple of clicks and instantly start trading:
We continuously enhance the MetaTrader 5 mobile app for iOS by adding valuable trading and analytical features. In the past six months, we have introduced bulk trading operations, extra timeframes, trading notifications, and more. Here is a detailed overview of all these innovations.
Install the latest app version and unlock extended trading capabilities:
![]() |
![]() |
Over the past six months, a vast array of new features has been introduced to the MetaTrader 5 mobile app for Android. These include fast on-chart trading features, additional timeframes, visual representation of trading history, and more. A detailed overview of these updates is provided below.
Install the latest app version and unlock extended trading capabilities:
![]() |
![]() |
![]() |
Google Play | Huawei App Gallery | APK file |
Terminal
MQL5
MetaTrader 5 Web Terminal
Terminal
MetaTrader 5 Web Terminal
Terminal
MQL5
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { complex a=1+1i; complex b=a.Conjugate(); Print(a, " ", b); /* (1,1) (1,-1) */ vectorc va= {0.1+0.1i, 0.2+0.2i, 0.3+0.3i}; vectorc vb=va.Conjugate(); Print(va, " ", vb); /* [(0.1,0.1),(0.2,0.2),(0.3,0.3)] [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)] */ matrixc ma(2, 3); ma.Row(va, 0); ma.Row(vb, 1); matrixc mb=ma.Conjugate(); Print(ma); Print(mb); /* [[(0.1,0.1),(0.2,0.2),(0.3,0.3)] [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]] [[(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)] [(0.1,0.1),(0.2,0.2),(0.3,0.3)]] */ ma=mb.Transpose().Conjugate(); Print(ma); /* [[(0.1,0.1),(0.1,-0.1)] [(0.2,0.2),(0.2,-0.2)] [(0.3,0.3),(0.3,-0.3)]] */ }
from sys import argv data_path=argv[0] last_index=data_path.rfind("\\")+1 data_path=data_path[0:last_index] from sklearn.datasets import load_iris iris_dataset = load_iris() from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0) from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=1) knn.fit(X_train, y_train) # Convert into ONNX format from skl2onnx import convert_sklearn from skl2onnx.common.data_types import FloatTensorType initial_type = [('float_input', FloatTensorType([None, 4]))] onx = convert_sklearn(knn, initial_types=initial_type) path = data_path+"iris.onnx" with open(path, "wb") as f: f.write(onx.SerializeToString())Open the created onnx file in MetaEditor:
struct MyMap { long key[]; float value[]; };Here we used dynamic arrays with appropriate types. In this case, we can use fixed arrays because the Map for this model always contains 3 key+value pairs.
//--- declare an array to receive data from the output layer output_probability MyMap output_probability[]; ... //--- model running OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);
MetaEditor
MetaTrader 5 Web Terminal build 3980