copy_ticks_from

Recebe ticks do terminal MetaTrader 5, a partir da data especificada.

copy_ticks_from(
   symbol,       // nome do símbolo
   date_from,    // data a partir da qual são solicitados os ticks
   count,        // número de ticks solicitados
   flags         // combinação de sinalizadores que definem o tipo de ticks solicitados
   )

Parâmetros

symbol

[in]  Nome do instrumento financeiro, por exemplo, "EURUSD". Parâmetro sem nome obrigatório.

date_from

[in]  Data a partir da qual são solicitados os ticks. É definido pelo objeto datetime ou pelo número de segundos que passaram desde 1970.01.01. Parâmetro sem nome obrigatório.

count

[in]  Número de ticks que é necessário obter. Parâmetro sem nome obrigatório.

flags

[in]  sinalizador que especifica o tipo de ticks solicitados. COPY_TICKS_INFO — ticks chamados pelas alterações do Bid e/ou Ask, COPY_TICKS_TRADE — ticks com alterações em Last e Volume, COPY_TICKS_ALL — todos os ticks. Valores dos sinalizadores descritos na enumeração COPY_TICKS. Parâmetro sem nome obrigatório.

Valor retornado

Retorna os ticks na forma de array numpy contendo colunas nomeadas time, bid, ask, last e flags. O elemento flags pode ser uma combinação de sinalizadores a partir da enumeração TICK_FLAG. Em caso de erro, retorna None, enquanto informações sobre o erro podem ser obtidas usando last_error().

Observação

Para mais informações, veja a função CopyTicks.

Python, ao criar um objeto datetime, usa o fuso horário local, enquanto o terminal MetaTrader 5 armazena o tempo de ticks e de abertura de barras no fuso horário UTC (sem deslocamento). Assim, para executar funções que usam tempo, deve-se criar um datetime no horário UTC. Os dados recebidos do terminal MetaTrader 5 têm hora UTC.

COPY_TICKS define os tipos de ticks que podem ser solicitados com a ajuda das funções copy_ticks_from() e copy_ticks_range().

Identificador

Descrição

COPY_TICKS_ALL

todos os ticks

COPY_TICKS_INFO

ticks contendo alterações de preços Bid e/ou Ask

COPY_TICKS_TRADE

ticks contendo alterações do preço Last e/ou do volume (Volume)

TICK_FLAG define possíveis sinalizadores para ticks. Esses sinalizadores são usados para descrever os ticks recebidos pelas funções copy_ticks_from() e copy_ticks_range().

Identificador

Descrição

TICK_FLAG_BID

preço Bid alterado

TICK_FLAG_ASK

preço Ask alterado

TICK_FLAG_LAST

preço Last alterado

TICK_FLAG_VOLUME

volume alterado (Volume)

TICK_FLAG_BUY

preço da última compra alterado (Buy)

TICK_FLAG_SELL

preço da última venda alterado (Sell)

 

Exemplo:

from datetime import datetime
import MetaTrader5 as mt5
# exibimos dados sobre o pacote MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# importamos o módulo pandas para exibir os dados recebidos na forma de uma tabela
import pandas as pd
pd.set_option('display.max_columns', 500# número de colunas
pd.set_option('display.width', 1500)      # largura máxima da tabela
# importamos o módulo pytz para trabalhar com o fuso horário
import pytz
 
# estabelecemos a conexão ao MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# definimos o fuso horário como UTC
timezone = pytz.timezone("Etc/UTC")
# criamos o objeto datetime no fuso horário UTC para que não seja aplicado o deslocamento do fuso horário localutc_from = datetime(2020, 1, 10, tzinfo=timezone)
# solicitamos 100 000 ticks de EURUSD a partir de 04/01/2019 no fuso horário UTC
ticks = mt5.copy_ticks_from("EURUSD"utc_from100000, mt5.COPY_TICKS_ALL)
print("Ticks recebidos:",len(ticks))
 
# concluímos a conexão ao terminal MetaTrader 5
mt5.shutdown()
 
# exibimos cada tick numa nova linha
print("Exibimos os ticks recebidos como são")
count = 0
for tick in ticks:
    count+=1
    print(tick)
    if count >= 10:
        break
 
# a partir dos dados recebidos criamos o DataFrame
ticks_frame = pd.DataFrame(ticks)
# convertemos o tempo em segundos no formato datetime
ticks_frame['time']=pd.to_datetime(ticks_frame['time'], unit='s')
 
# exibimos dados
print("\nExibimos o dataframe com ticks")
print(ticks_frame.head(10))  
 
Resultado:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Ticks recebidos: 100 000
Exibimos os ticks recebidos como são
(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.)
 
Exibimos o dataframe com 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

Veja também

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range