forked from airat77786/MQL5Book
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)
| |||
#+------------------------------------------------------------------+
|