48 lines
2.3 KiB
Python
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)
|
|
#+------------------------------------------------------------------+
|