copy_ticks_from

Obtiene los ticks del terminal MetaTrader 5, a partir de la fecha indicada.

copy_ticks_from(
   symbol,       // nombre del símbolo
   date_from,    // fecha a partir de la cual se solicitan los ticks
   count,        // número de ticks solicitados
   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.

count

[in]  Número de ticks que se deben obtener. 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.

COPY_TICKS determina los tipos de ticks que pueden ser solicitados con la ayuda de las funciones copy_ticks_from() y copy_ticks_range().

Identificador

Descripción

COPY_TICKS_ALL

todos los ticks

COPY_TICKS_INFO

ticks que contengan cambios en los precios Bid y/o Ask

COPY_TICKS_TRADE

ticks que contengan cambios en el precio Last y/o el volumen (Volume)

TICK_FLAG determina las posibles banderas para los ticks. Estas banderas se usan para describir los ticks obtenidos con las funciones copy_ticks_from() y copy_ticks_range().

Identificador

Descripción

TICK_FLAG_BID

el precio Bid ha cambiado

TICK_FLAG_ASK

el precio Ask ha cambiado

TICK_FLAG_LAST

el precio Last ha cambiado

TICK_FLAG_VOLUME

el volumen (Volume) ha cambiado

TICK_FLAG_BUY

el precio de la última compra (Buy) ha cambiado

TICK_FLAG_SELL

el precio de la última venta (Sell) ha cambiado

 

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)      # anchura máx. 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 el objeto 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)
# solicitamos 100000 ticks de EURUSD desde 10.01.2019 en el huso horario UTC
ticks = mt5.copy_ticks_from("EURUSD"utc_from100000, mt5.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: 100000
Mostramos los datos obtenidos como son
(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.)
 
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  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

Ver también

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range