Download MetaTrader 5

Watch how to download trading robots for free

Interesting script?
So post a link to it -
let others appraise it

You liked the script? Try it in the MetaTrader 5 terminal

2017.01.26 09:11

PCA Synthetics - Recycle Legacy - indicator for MetaTrader 5

| English Русский 中文 Español Deutsch 日本語 Português

votes: 11
Resources.mqh (14.94 KB)view
Matrices.mqh (15.47 KB)view
Charts.mqh (3.79 KB)view

Indicator for automatic selection of the coefficients for every instrument in a pseudo-stationary portfolio, which tends to equilibrium at zero.

The indicator requires the presence of the AlgLib library in the Include\Math folder of the terminal.

A Bit of Theory

Every instrument moves in its own direction, every direction is a separate dimension in a multidimensional array. Bu turning the matrix, that is, by multiplying its every element by a certain number, we try to find an axis, with the minimum distance the axis and all instruments, i.e. the least total variance. The number to multiply each element of the matrix then becomes the angle value, by which the moving instrument should be turned so that it moves in the same direction as other instruments. This angle value is the coefficient for every currency in the portfolio.

If the coefficient value is greater than 0 the currency is bought, if less than 0 — sold. Thus, it is possible to sustain the stationarity of the created synthetic by recalculating the coefficients from time to time. In addition, the PCA does not simply find the axis with the least variance for the portfolio, but several. The number of instruments in the portfolio is the number of components (vectors). Each of them is called the main component, and determines how much it affects the total change of the portfolio movement.

Possible problems

  1. If the chart is not drawn, see what is printed in the Experts tab. Perhaps, there are some errors or synchronizations with other charts is in progress. If there are no messages, click through other timeframes.

  2. The obtained vector values were verified with the once calculated in the R package, so the values themselves are correct. But the sign of a specific coefficient may be wrong, as the РСА does not pay attention to signs. The "-" or "+" sign can only be determined empirically, that is by trial and error.

Problem #2 with has been describes with the pictures here:


InpVector = 0; // If there are N currencies in portfolio, the movement axis number 0 = maximum variance, N - 1 = minimum
InpFrame = 300; // Floating window for calculation of coefficients, for each of InpDepth bars make InpFrame computations
InpDepth = 1000; // The total number of bars in history, for which the chart is drawn
InpForward = 500; // The bar to stop recalculating the coefficients and use the previous ones, this is OOS
InpPeriod = 1; // Smoothing for the МА, to make the chart look less twitched
InpTimePeriod = PERIOD_CURRENT; // Timeframe for the calculations
InpNormalize = true; // Normalize the prices before displaying them, to smooth the volatility gaps of USDJPY and EURGBP
InpSynthetics = true; // Draw the summary synthetic multiplied by the found coefficients or each pair individually
InpPrices = Logs; // Normalization algorithm of pairs
InpSymbols = "AUDUSD,USDCHF,USDCAD"; // Pairs for the portfolio
InpMagic = "ID" // Custom name of the indicator, to facilitate placing multiple instances on one chart without conflicts

The idea was adopted from here:

Translated from Russian by MetaQuotes Software Corp.
Original code:

Relation - Chart Builder Legacy Relation - Chart Builder Legacy

Indicator for building custom charts, which are based on user-defined formula.

The MasterMind The MasterMind

The Expert Advisor uses the iStochastic (Stochastic) Oscillator, iWPR (Larry Williams' Percent Range) indicators.

Fractal_Moving_Average Fractal_Moving_Average

Fractal moving average with indication of the last value with a price label with the ability to change the averaging algorithm.

Fractal_WPR_HTF Fractal_WPR_HTF

The Fractal_WPR indicator with the timeframe selection option available in the input parameters.