#+------------------------------------------------------------------+
#|                                                     ratescorr.py |
#|                                  Copyright 2022, MetaQuotes Ltd. |
#|                                             https://www.mql5.com |
#+------------------------------------------------------------------+
import MetaTrader5 as mt5
import pandas as pd              # подключаем модуль pandas для вывода данных
import matplotlib.pyplot as plt  # подключаем модуль matplotlib для рисования

# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
   print("initialize() failed, error code =", mt5.last_error())
   mt5.shutdown()
   quit()

# создадим путь в "песочнице" для картинки с результатом
image = mt5.terminal_info().data_path + r'\MQL5\Files\MQL5Book\ratescorr'

# список рабочих валют для расчета корреляции
sym = ['EURUSD','GBPUSD','USDJPY','USDCHF','AUDUSD','USDCAD','NZDUSD','XAUUSD']

# копируем цены закрытия баров в структуры DataFrame
d = pd.DataFrame()
for i in sym:        # для каждого символа по 1000 последних баров M1
   rates = mt5.copy_rates_from_pos(i, mt5.TIMEFRAME_M1, 0, 1000)
   d[i] = [y['close'] for y in rates]

# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()

# вычислим изменение цен в процентах
rets = d.pct_change()

# вычислим корреляции
corr = rets.corr()

# рисуем корреляционную матрицу
fig = plt.figure(figsize = (5, 5))
fig.add_axes([0.15, 0.1, 0.8, 0.8])
plt.imshow(corr, cmap = 'RdYlGn', interpolation = 'none', aspect = 'equal')
plt.colorbar()
plt.xticks(range(len(corr)), corr.columns, rotation = 'vertical')
plt.yticks(range(len(corr)), corr.columns)
# покажем диграмму корреляции
plt.show()         
# сохранение в файл для просмотра после запуска 
plt.savefig(image) 
#+------------------------------------------------------------------+
