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