copy_ticks_from

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

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

Параметры

symbol

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

date_from

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

count

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

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-время.

COPY_TICKS определяет типы тиков, которые могут быть запрошены с помощью функций copy_ticks_from() и copy_ticks_range().

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

Описание

COPY_TICKS_ALL

все тики

COPY_TICKS_INFO

тики, содержащие изменения цен Bid и/или Ask

COPY_TICKS_TRADE

тики, содержащие изменения цены Last и/или объема (Volume)

TICK_FLAG определяет возможные флаги для тиков. Данные флаги используются для описания тиков,  полученных функциями copy_ticks_from() и copy_ticks_range().

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

Описание

TICK_FLAG_BID

изменилась цена Bid

TICK_FLAG_ASK

изменалась цена Ask

TICK_FLAG_LAST

изменилась цена Last

TICK_FLAG_VOLUME

изменился объем (Volume)

TICK_FLAG_BUY

изменилась цена последней покупки (Buy)

TICK_FLAG_SELL

изменилась цена последней продажи (Sell)

 

Пример:

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)
# запросим 100000 тиков по EURUSD с 10.01.2019 в таймзоне UTC
ticks = mt5.copy_ticks_from("EURUSD"utc_from100000, mt5.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
 
Получено тиков: 100000
Выведем полученные тики как есть
(1578614400, 1.11051, 1.11069, 0., 0, 1578614400987, 134, 0.)
(1578614402, 1.11049, 1.11067, 0., 0, 1578614402025, 134, 0.)
(1578614404, 1.1105, 1.11066, 0., 0, 1578614404057, 134, 0.)
(1578614404, 1.11049, 1.11067, 0., 0, 1578614404344, 134, 0.)
(1578614412, 1.11052, 1.11064, 0., 0, 1578614412106, 134, 0.)
(1578614418, 1.11039, 1.11051, 0., 0, 1578614418265, 134, 0.)
(1578614418, 1.1104, 1.1105, 0., 0, 1578614418905, 134, 0.)
(1578614419, 1.11039, 1.11051, 0., 0, 1578614419519, 134, 0.)
(1578614456, 1.11037, 1.11065, 0., 0, 1578614456011, 134, 0.)
(1578614456, 1.11039, 1.11051, 0., 0, 1578614456015, 134, 0.)
 
Выведем датафрейм с тиками
                 time      bid      ask  last  volume       time_msc  flags  volume_real
0 2020-01-10 00:00:00  1.11051  1.11069   0.0       0  1578614400987    134          0.0
1 2020-01-10 00:00:02  1.11049  1.11067   0.0       0  1578614402025    134          0.0
2 2020-01-10 00:00:04  1.11050  1.11066   0.0       0  1578614404057    134          0.0
3 2020-01-10 00:00:04  1.11049  1.11067   0.0       0  1578614404344    134          0.0
4 2020-01-10 00:00:12  1.11052  1.11064   0.0       0  1578614412106    134          0.0
5 2020-01-10 00:00:18  1.11039  1.11051   0.0       0  1578614418265    134          0.0
6 2020-01-10 00:00:18  1.11040  1.11050   0.0       0  1578614418905    134          0.0
7 2020-01-10 00:00:19  1.11039  1.11051   0.0       0  1578614419519    134          0.0
8 2020-01-10 00:00:56  1.11037  1.11065   0.0       0  1578614456011    134          0.0
9 2020-01-10 00:00:56  1.11039  1.11051   0.0       0  1578614456015    134          0.0

Смотри также

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range