copy_rates_from

Получает бары из терминала MetaTrader 5, начиная с указанной даты.

copy_rates_from(
   symbol,       // имя символа
   timeframe,    // таймфрейм
   date_from,    // дата открытия начального бара
   count         // количество баров
   )

Параметры

symbol

[in]  Имя финансового инструмента, например, "EURUSD". Обязательный неименованный параметр.

timeframe

[in]  Таймфрейм, для которого запрашиваются бары. Задается значением из перечисления TIMEFRAME. Обязательный неименованный параметр.

date_from

[in]  Дата открытия первого бара из запрашиваемой выборки. Задается объектом datetime или в виде количества секунд, прошедших с 1970.01.01. Обязательный неименованный параметр.

count

[in]  Количество баров, которое необходимо получить. Обязательный неименованный параметр.

Возвращаемое значение

Возвращает бары в виде массива numpy с именованными столбцами time, open, high, low, close, tick_volume, spread и real_volume. В случае ошибки возвращает None, информацию об ошибке можно получить с помощью last_error().

Примечание

Для дополнительной информации смотрите функцию CopyRates().

Возвращаются только данные, дата которых меньше (раньше) или равна указанной. При этом интервал задается и учитывается с точностью до секунды. То есть дата открытия любого бара всегда равна или меньше указанной.

Терминал MetaTrader 5 отдает бары только в пределах истории, доступной пользователю на графиках. Количество баров, которые доступны пользователю, задается в настройках параметром "Макс. баров в окне".

Python при создании объекта datetime использует таймзону локального времени, в то время как терминал MetaTrader 5 хранит время тиков и открытия баров в UTC таймзоне (без смещения). Поэтому, для выполнения функций, использующих время, необходимо создавать datetime в UTC-времени. Данные, полученные из терминала MetaTrader 5, имеют UTC-время.  

TIMEFRAME является перечислением с возможными значениями периодов графика

Идентификатор

Описание

TIMEFRAME_M1

1 минута

TIMEFRAME_M2

2 минуты

TIMEFRAME_M3

3 минуты

TIMEFRAME_M4

4 минуты

TIMEFRAME_M5

5 минут

TIMEFRAME_M6

6 минут

TIMEFRAME_M10

10 минут

TIMEFRAME_M12

12 минут

TIMEFRAME_M12

15 минут

TIMEFRAME_M20

20 минут

TIMEFRAME_M30

30 минут

TIMEFRAME_H1

1 час

TIMEFRAME_H2

2 часа

TIMEFRAME_H3

3 часа

TIMEFRAME_H4

4 часа

TIMEFRAME_H6

6 часов

TIMEFRAME_H8

8 часов

TIMEFRAME_H12

12 часов

TIMEFRAME_D1

1 день

TIMEFRAME_W1

1 неделя

TIMEFRAME_MN1

1 месяц

 

Пример:

from datetime import datetime
import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# импортируем модуль pandas для вывода полученных данных в табличной форме
import pandas as pd
pd.set_option('display.max_columns', 500# сколько столбцов показываем
pd.set_option('display.width', 1500)      # макс. ширина таблицы для показа
# импортируем модуль pytz для работы с таймзоной
import pytz
 
# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# установим таймзону в UTC
timezone = pytz.timezone("Etc/UTC")
# создадим объект datetime в таймзоне UTC, чтобы не применялось смещение локальной таймзоны
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
# получим 10 баров с EURUSD H4 начиная с 01.10.2020 в таймзоне UTC
rates = mt5.copy_rates_from("EURUSD"mt5.TIMEFRAME_H4utc_from10)
 
# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
# выведем каждый элемент полученных данных на новой строке
print("Выведем полученные данные как есть")
for rate in rates:
    print(rate)
 
# создадим из полученных данных DataFrame
rates_frame = pd.DataFrame(rates)
# сконвертируем время в виде секунд в формат datetime
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
                           
# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame)  
 
Результат:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Выведем полученные данные как есть
(1578484800, 1.11382, 1.11385, 1.1111, 1.11199, 9354, 1, 0)
(1578499200, 1.11199, 1.11308, 1.11086, 1.11179, 10641, 1, 0)
(1578513600, 1.11178, 1.11178, 1.11016, 1.11053, 4806, 1, 0)
(1578528000, 1.11053, 1.11193, 1.11033, 1.11173, 3480, 1, 0)
(1578542400, 1.11173, 1.11189, 1.11126, 1.11182, 2236, 1, 0)
(1578556800, 1.11181, 1.11203, 1.10983, 1.10993, 7984, 1, 0)
(1578571200, 1.10994, 1.11173, 1.10965, 1.11148, 7406, 1, 0)
(1578585600, 1.11149, 1.11149, 1.10923, 1.11046, 7468, 1, 0)
(1578600000, 1.11046, 1.11097, 1.11033, 1.11051, 3450, 1, 0)
(1578614400, 1.11051, 1.11093, 1.11017, 1.11041, 2448, 1, 0)
 
Выведем датафрейм с данными
                 time     open     high      low    close  tick_volume  spread  real_volume
0 2020-01-08 12:00:00  1.11382  1.11385  1.11110  1.11199         9354       1            0
1 2020-01-08 16:00:00  1.11199  1.11308  1.11086  1.11179        10641       1            0
2 2020-01-08 20:00:00  1.11178  1.11178  1.11016  1.11053         4806       1            0
3 2020-01-09 00:00:00  1.11053  1.11193  1.11033  1.11173         3480       1            0
4 2020-01-09 04:00:00  1.11173  1.11189  1.11126  1.11182         2236       1            0
5 2020-01-09 08:00:00  1.11181  1.11203  1.10983  1.10993         7984       1            0
6 2020-01-09 12:00:00  1.10994  1.11173  1.10965  1.11148         7406       1            0
7 2020-01-09 16:00:00  1.11149  1.11149  1.10923  1.11046         7468       1            0
8 2020-01-09 20:00:00  1.11046  1.11097  1.11033  1.11051         3450       1            0
9 2020-01-10 00:00:00  1.11051  1.11093  1.11017  1.11041         2448       1            0

Смотри также

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range