copy_ticks_range

Obtiene los ticks en el intervalo de fechas indicado del terminal MetaTrader 5.

copy_ticks_range(
   symbol,       // nombre del símbolo
   date_from,    // fecha a partir de la cual se solicitan los ticks
   date_to,      // fecha hasta la cual se solicitan los ticks
   flags         // combinación de banderas que determina el tipo de ticks solicitados
   )

Parámetros

symbol

[in]  Nombre del instrumento financiero, por ejemplo, "EURUSD". Parámetro no nombrado obligatorio.

date_from

[in]  Fecha a partir de la cual se solicitan los ticks. Se establece con el objeto datetime o como número de segundos transcurridos desde el 1970.01.01. Parámetro no nombrado obligatorio.

date_to

[in]  Fecha hasta la cual se solicitan los ticks. Se establece con el objeto datetime o como número de segundos transcurridos desde el 1970.01.01. Parámetro no nombrado obligatorio.

flags

[in]  Bandera que determina el tipo de ticks solicitados. COPY_TICKS_INFO - ticks provocados por los cambios de Bid y/o Ask, COPY_TICKS_TRADE — ticks con los cambios de Last y Volume, COPY_TICKS_ALL — todos los ticks. Los valores de las banderas se describen en la enumeración COPY_TICKS. Parámetro no nombrado obligatorio.

Valor retornado

Retona los ticks en forma de matriz numpy con las columnas nombradas time, bid, ask, last y flags. El valor flags puede ser una combinación de banderas de la enumeración TICK_FLAG. En caso de error, retorna None; la información sobre el error se puede obtener con la ayuda de last_error().

Observación

Para más información, mire la función CopyTicks.

Python, al crear el objeto datetime, usa el huso horario de la hora local, mientras que el terminal MetaTrader 5 guarda la hora de los ticks y la apertura de las barras en el huso horario UTC (sin desplazamiento). Por eso, para ejecutar las funciones que usen la hora, es necesario crear datetime en la hora UTC. Los datos recibidos del terminal MetaTrader 5 tienen la hora UTC, pero al intentar imprimirlos, Python aplicará el desplazamiento a la hora local. Por eso, los datos obtenidos también deben ser corregidos para la representación visual.

Ejemplo:

from datetime import datetime
import MetaTrader5 as mt5
# mostramos los datos sobre el paquete MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# importamos el módulo pandas para mostrar los datos obtenidos en forma de recuadro
import pandas as pd
pd.set_option('display.max_columns', 500# cuántas columnas mostramos
pd.set_option('display.width', 1500)      # máx. anchura del recuadro para la muestra
# importamos el módulo pytz para trabajar con el huso horario
import pytz
 
# establecemos la conexión con el terminal MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# establecemos el huso horario en UTC
timezone = pytz.timezone("Etc/UTC")
# creamos los objetos datetime en el huso horario UTC, para que no se aplique el desplazamiento del huso horario local
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
utc_to = datetime(2020, 1, 11, tzinfo=timezone)
# solicitamos los ticks de AUDUSD en el intervalo 11.01.2020 - 11.01.2020
ticks = mt5.copy_ticks_range("AUDUSD"utc_from, utc_tomt5.COPY_TICKS_ALL)
print("Ticks obtenidos:",len(ticks))
 
# finalizamos la conexión con el terminal MetaTrader 5
mt5.shutdown()
# mostramos los datos de cada tick en una nueva línea
print("Mostramos los datos obtenidos como son")
count = 0
for tick in ticks:
    count+=1
    print(tick)
    if count >= 10:
        break
 
# creamos un DataFrame de los datos obtenidos
ticks_frame = pd.DataFrame(ticks)
# convertimos la hora en segundos al formato datetime
ticks_frame['time']=pd.to_datetime(ticks_frame['time'], unit='s')
 
# mostramos los datos
print("\nMostramos el frame de datos con los ticks")
print(ticks_frame.head(10)
 
Resultado:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Ticks obtenidos: 37008
Mostramos los datos obtenidos como son
(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.)
 
Mostramos el frame de datos con los ticks
                 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

Ver también

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range