copy_rates_from_pos

Obtiene las barras del terminal MetaTrader 5, a partir del índice establecido.

copy_rates_from_pos(
   symbol,       // nombre del símbolo
   timeframe,    // marco temporal
   start_pos,    // número de la barra inicial
   count         // número de barras
   )

Parámetros

symbol

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

timeframe

[in]  Marco temporal para el que se solicitan las barras. Se establece con el valor de la enumeración TIMEFRAME. Parámetro no nombrado obligatorio.

start_pos

[in]  Número inicial de la barra, a partir del cual se solicitan los datos. La numeración de las barras va del presente hacia el pasado, es decir, la barra cero es la actual. Parámetro no nombrado obligatorio.

count

[in]  Número de barras que se deben obtener. Parámetro no nombrado obligatorio.

Valor retornado

Retona las barras en forma de matriz numpy con las columnas nombradas time, open, high, low, close, tick_volume, spread y real_volume. 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 CopyRates().

El terminal MetaTrader 5 entrega las barras solo dentro de la historia disponible para el usuario en los gráficos. El número de barras disponibles para el usuario se establece en los ajustes con el parámetro "Máx. de barras en la ventana".

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
 
# establecemos la conexión con el terminal MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# solicitamos 10 barras de GBPUSD D1 desde el día actual
rates = mt5.copy_rates_from_pos("GBPUSD"mt5.TIMEFRAME_D1010)
 
# finalizamos la conexión con el terminal MetaTrader 5
mt5.shutdown()
 
# mostramos cada elemento de los datos obtenidos en una nueva línea
print("Mostramos los datos obtenidos como son")
for rate in rates:
    print(rate)
 
# creamos un DataFrame de los datos obtenidos
rates_frame = pd.DataFrame(rates)
# convertimos la hora en segundos al formato datetime
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
 
# mostramos los datos
print("\nMostramos el frame de datos con la información")
print(rates_frame
 
Resultado:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Mostramos los datos obtenidos como son
(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)
 
Mostramos el frame de datos con la información
        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

Ver también

CopyRates, copy_rates_from, copy_rates_range, copy_ticks_from, copy_ticks_range