MQL5Book/Scripts/Python/ratescorr.py
super.admin 1c8e83ce31 convert
2025-05-30 16:09:41 +02:00

48 lines
2.3 KiB
Python

#+------------------------------------------------------------------+
#| 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)
#+------------------------------------------------------------------+