2021-03-03 14:41:36 +00:00
2021-02-10 18:26:43 +00:00
2021-02-16 17:15:00 +00:00
2021-02-10 18:26:43 +00:00
2021-02-02 16:48:52 +00:00
2021-02-01 16:37:56 +00:00
2021-02-10 18:21:49 +00:00
2021-02-10 18:21:49 +00:00

mt5-correlation

Calculates correlation coefficient between all symbols in MetaTrader5 Market Watch.

Setup

  1. Set up your MetaTrader 5 environment ensuring that all symbols that you would like to assess for correlation are shown in your Market Watch window;
  2. Set up your python environment; and
  3. Install the required libraries.
pip install -r mt5-correlation/requirements.txt

Usage

If you set up a virtual environment in the Setup step, ensure this is activated. Then run the script.

python -m mt5_correlations/get_correlations.py

A .csv file containing the correlation coefficient for all combinations of sybmols from the MetaTrader market watch will be produced in the current directory.

Symbol 1 Symbol 2 Coefficient UTC Date From UTC Date To Timeframe
OIL-MAR21 OILMn-MAR21 1.0 2021-01-29 11:54:29 2021-02-05 11:54:29 15
EURUSD EURHKD 0.99980 2021-01-29 11:54:29 2021-02-05 11:54:29 15
OILMn-MAR21 BRENT-APR21 0.99894 2021-01-29 11:54:29 2021-02-05 11:54:29 15
OIL-MAR21 BRENT-APR21 0.99894 2021-01-29 11:54:29 2021-02-05 11:54:29 15
GSOIL-FEB21 BRENT-APR21 0.99605 2021-01-29 11:54:29 2021-02-05 11:54:29 15
GSOIL-FEB21 OILMn-MAR21 0.99543 2021-01-29 11:54:29 2021-02-05 11:54:29 15
GSOIL-FEB21 OIL-MAR21 0.99543 2021-01-29 11:54:29 2021-02-05 11:54:29 15
EU50Cash FRA40Cash 0.99072 2021-01-29 11:54:29 2021-02-05 11:54:29 15

Customising

Edit get_correlations.py to customise.

The coefficients are calculated only if:

  • The smallest set of price data is no less than 90% of the size of the largest set;
  • The overlapping prices between both sets of price data contains no less than 90% of the prices in the smallest set;
  • The pearsonr p-value for the calculated coefficient is less than 0.05.

These settings can all be changed in the call to Correlation.calculate_coefficient by passing values for max_set_size_diff_pct; overlap_pct; or max_p_value.

coefficient = Correlation.calculate_coefficient(symbol1_prices=symbol1_price_data,
                                                        symbol2_prices=symbol2_price_data, max_set_size_diff_pct=90,
                                                        overlap_pct=90, max_p_value=0.05)

The price data compared is 15 minute price data for the last 7 days. This can be changed by changing the values for the following variables:

utc_to = datetime.now(tz=timezone)
utc_from = utc_to - timedelta(days=7)
timeframe = mt5.TIMEFRAME_M15

The possible values for timeframe are:

Timeframe Description
TIMEFRAME_M1 1 minute
TIMEFRAME_M2 2 minutes
TIMEFRAME_M3 3 minutes
TIMEFRAME_M4 4 minutes
TIMEFRAME_M5 5 minutes
TIMEFRAME_M6 6 minutes
TIMEFRAME_M10 10 minutes
TIMEFRAME_M12 12 minutes
TIMEFRAME_M12 15 minutes
TIMEFRAME_M20 20 minutes
TIMEFRAME_M30 30 minutes
TIMEFRAME_H1 1 hour
TIMEFRAME_H2 2 hours
TIMEFRAME_H3 3 hours
TIMEFRAME_H4 4 hours
TIMEFRAME_H6 6 hours
TIMEFRAME_H8 8 hours
TIMEFRAME_H12 12 hours
TIMEFRAME_D1 1 day
TIMEFRAME_W1 1 week
TIMEFRAME_MN1 1 month
S
Description
Calculates correlation coefficient between all symbols in MetaTrader5 Market Watch
Readme MIT 156 KiB
Languages
Python 100%