copy_ticks_range

Recebe ticks a partir do terminal MetaTrader 5, no intervalo de datas especificado.

copy_ticks_range(
   symbol,       // nome do símbolo
   date_from,    // data a partir da qual são solicitados os ticks
   date_to,      // data segundo a qual são solicitados os ticks
   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.

date_to

[in]  Data para a 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.

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, mas quando se tenta imprimi-los, o Python aplica novamente o deslocamento para a hora local. Por essa razão, a apresentação visual dos dados recebidos também precisa ser corrigida.

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 exibidas
pd.set_option('display.width', 1500)      # max. largura para exibição da tabela
# importamos o módulo pytz para trabalhar com o fuso horário
import pytz
 
# estabelecemos conexão ao terminal 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 datatime no fuso horário UTC para que não seja aplicado o deslocamento do fuso horário local
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
utc_to = datetime(2020, 1, 11, tzinfo=timezone)
# solicitamos ticks de AUDUSD no intervalo de 11.01.2020 - 11.01.2020
ticks = mt5.copy_ticks_range("AUDUSD"utc_from, utc_tomt5.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 estã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: 37008
Exibimos os ticks recebidos como são
(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.)
 
Exibimos o dataframe com 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

Veja também

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range