copy_ticks_range

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

copy_ticks_range(
   symbol,       // имя символа
   date_from,    // дата, с которой запрашиваются тики
   date_to,      // дата, по которую запрашиваются тики
   flags         // комбинация флагов, определяющая тип запрашиваемых тиков
   )

Параметры

symbol

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

date_from

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

date_to

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

flags

[in]  Флаг, определяющий тип запрашиваемых тиков. COPY_TICKS_INFO – тики, вызванные изменениями Bid и/или Ask, COPY_TICKS_TRADE – тики с изменения Last и Volume, COPY_TICKS_ALL – все тики. Значения флагов описаны в перечислении COPY_TICKS. Обязательный неименованный параметр.

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

Возвращает тики в виде массива numpy с именованными столбцами time, bid, ask, last и flags. Значение flags может быть комбинацией флагов из перечисления TICK_FLAG. В случае ошибки возвращает None, информацию об ошибке можно получить с помощью last_error().

Примечание

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

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

Пример:

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)
utc_to = datetime(2020, 1, 11, tzinfo=timezone)
# запросим тики по AUDUSD в интервале 11.01.2020 - 11.01.2020
ticks = mt5.copy_ticks_range("AUDUSD"utc_from, utc_tomt5.COPY_TICKS_ALL)
print("Получено тиков:",len(ticks))
 
# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
# выведем данные каждого тика на новой строке
print("Выведем полученные тики как есть")
count = 0
for tick in ticks:
    count+=1
    print(tick)
    if count >= 10:
        break
 
# создадим из полученных данных DataFrame
ticks_frame = pd.DataFrame(ticks)
# сконвертируем время в виде секунд в формат datetime
ticks_frame['time']=pd.to_datetime(ticks_frame['time'], unit='s')
 
# выведем данные
print("\nВыведем датафрейм с тиками")
print(ticks_frame.head(10)
 
Результат:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Получено тиков: 37008
Выведем полученные тики как есть
(1578614400, 0.68577, 0.68594, 0., 0, 1578614400820, 134, 0.)
(1578614401, 0.68578, 0.68594, 0., 0, 1578614401128, 130, 0.)
(1578614401, 0.68575, 0.68594, 0., 0, 1578614401128, 130, 0.)
(1578614411, 0.68576, 0.68594, 0., 0, 1578614411388, 130, 0.)
(1578614411, 0.68575, 0.68594, 0., 0, 1578614411560, 130, 0.)
(1578614414, 0.68576, 0.68595, 0., 0, 1578614414973, 134, 0.)
(1578614430, 0.68576, 0.68594, 0., 0, 1578614430188, 4, 0.)
(1578614450, 0.68576, 0.68595, 0., 0, 1578614450408, 4, 0.)
(1578614450, 0.68576, 0.68594, 0., 0, 1578614450519, 4, 0.)
(1578614456, 0.68575, 0.68594, 0., 0, 1578614456363, 130, 0.)
 
Выведем датафрейм с тиками
                 time      bid      ask  last  volume       time_msc  flags  volume_real
0 2020-01-10 00:00:00  0.68577  0.68594   0.0       0  1578614400820    134          0.0
1 2020-01-10 00:00:01  0.68578  0.68594   0.0       0  1578614401128    130          0.0
2 2020-01-10 00:00:01  0.68575  0.68594   0.0       0  1578614401128    130          0.0
3 2020-01-10 00:00:11  0.68576  0.68594   0.0       0  1578614411388    130          0.0
4 2020-01-10 00:00:11  0.68575  0.68594   0.0       0  1578614411560    130          0.0
5 2020-01-10 00:00:14  0.68576  0.68595   0.0       0  1578614414973    134          0.0
6 2020-01-10 00:00:30  0.68576  0.68594   0.0       0  1578614430188      4          0.0
7 2020-01-10 00:00:50  0.68576  0.68595   0.0       0  1578614450408      4          0.0
8 2020-01-10 00:00:50  0.68576  0.68594   0.0       0  1578614450519      4          0.0
9 2020-01-10 00:00:56  0.68575  0.68594   0.0       0  1578614456363    130          0.0

Смотри также

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range