copy_rates_from_pos

Recebe barras do terminal MetaTrader 5, a partir do índice especificado.

copy_rates_from_pos(
   symbol,       // nome do símbolo
   timeframe,    // período gráfico
   start_pos,    // número da barra inicial
   count         // número de barras
   )

Parâmetros

symbol

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

timeframe

[in]  Período gráfico para o qual são solicitadas as barras. É definido pelo valor a partir da enumeração TIMEFRAME. Parâmetro sem nome obrigatório.

start_pos

[in]  Número inicial da barra a partir da qual são solicitados os dados. A numeração das barras vai do presente para o passado, ou seja, a barra zero significa a atual. Parâmetro sem nome obrigatório.

count

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

Valor retornado

Retorna barras na forma de array numpy contendo colunas nomeadas time, open, high, low, close, tick_volume, spread e real_volume. 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 CopyRates().

O terminal MetaTrader 5 fornece barras apenas nos limites do histórico disponível para o usuário nos gráficos. O número de barras disponíveis para o usuário é definido nas configurações com o parâmetro "Máx. de barras no gráfico"

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
 
# estabelecemos a conexão ao MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# solicitamos 10 barras de GBPUSD D1 do dia atual
rates = mt5.copy_rates_from_pos("GBPUSD"mt5.TIMEFRAME_D1010)
 
# concluímos a conexão ao terminal MetaTrader 5
mt5.shutdown()
 
# exibimos cada elemento de dados recebidos numa nova linha
print("Exibimos os dados recebidos como estão")
for rate in rates:
    print(rate)
 
# a partir dos dados recebidos criamos o DataFrame
rates_frame = pd.DataFrame(rates)
# convertemos o tempo em segundos no formato datetime
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
 
# exibimos dados
print("\nExibimos o dataframe com dados")
print(rates_frame
 
Resultado:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Exibimos os dados como eles são
(1581552000, 1.29568, 1.30692, 1.29441, 1.30412, 68228, 0, 0)
(1581638400, 1.30385, 1.30631, 1.3001, 1.30471, 56498, 0, 0)
(1581897600, 1.30324, 1.30536, 1.29975, 1.30039, 49400, 0, 0)
(1581984000, 1.30039, 1.30486, 1.29705, 1.29952, 62288, 0, 0)
(1582070400, 1.29952, 1.3023, 1.29075, 1.29187, 57909, 0, 0)
(1582156800, 1.29186, 1.29281, 1.28489, 1.28792, 61033, 0, 0)
(1582243200, 1.28802, 1.29805, 1.28746, 1.29566, 66386, 0, 0)
(1582502400, 1.29426, 1.29547, 1.28865, 1.29283, 66933, 0, 0)
(1582588800, 1.2929, 1.30178, 1.29142, 1.30037, 80121, 0, 0)
(1582675200, 1.30036, 1.30078, 1.29136, 1.29374, 49286, 0, 0)
 
Exibimos o dataframe com dados
        time     open     high      low    close  tick_volume  spread  real_volume
0 2020-02-13  1.29568  1.30692  1.29441  1.30412        68228       0            0
1 2020-02-14  1.30385  1.30631  1.30010  1.30471        56498       0            0
2 2020-02-17  1.30324  1.30536  1.29975  1.30039        49400       0            0
3 2020-02-18  1.30039  1.30486  1.29705  1.29952        62288       0            0
4 2020-02-19  1.29952  1.30230  1.29075  1.29187        57909       0            0
5 2020-02-20  1.29186  1.29281  1.28489  1.28792        61033       0            0
6 2020-02-21  1.28802  1.29805  1.28746  1.29566        66386       0            0
7 2020-02-24  1.29426  1.29547  1.28865  1.29283        66933       0            0
8 2020-02-25  1.29290  1.30178  1.29142  1.30037        80121       0            0
9 2020-02-26  1.30036  1.30078  1.29136  1.29374        49286       0            0

Veja também

CopyRates, copy_rates_from, copy_rates_range, copy_ticks_from, copy_ticks_range