copy_rates_range

Abrufen der Bars der angegebenen Zeitspanne vom MetaTrader 5 Terminal.

copy_rates_range(
   symbol,       // Symbolname
   timeframe,    // Zeitrahmen
   date_from,    // Zeitpunkt der ersten benötigten Bar
   date_to       // Zeitpunkt, bis zu dem die Bars angefordert werden
   )

Parameter

symbol

[in]  Name des Finanzinstruments, zum Beispiel "EURUSD". Benötigter unbenannter Parameter.

timeframe

[in]  Zeitrahmen der benötigten Bars Bestimmt durch einen Wert der Enumeration TIMEFRAME. Benötigter unbenannter Parameter.

date_from

[in]  Zeitpunkt der ersten benötigten Bar. Ausgewählt und gesetzt durch ein Objekt vom Typ 'datetime' oder der Anzahl der Sekunden seit dem 1970.01.01. Bars mit einer Eröffnungszeit >= date_from werden zurückgegeben. Benötigter unbenannter Parameter.

date_to

[in]  Zeitpunkt, bis zu dem die Bars angefordert werden. Ausgewählt und gesetzt durch ein Objekt vom Typ 'datetime' oder der Anzahl der Sekunden seit dem 1970.01.01. Bars mit einer Eröffnungszeit <= date_to werden zurückgegeben. Benötigter unbenannter Parameter.

Rückgabewert

Rückgabe de Bars als numpy Array mit den angegebenen Spalten von time, open, high, low, close, tick_volume, spread und real_volume. Im Falle eines Fehlers wird nichts zurückgegeben. Die Information über den Fehler kann über last_error() abgerufen werden.

Hinweis

Siehe auch die Funktion CopyRates() für weitere Information.

MetaTrader 5 Terminal stellt die Balken nur innerhalb der Historie zur Verfügung, die einem Benutzer auf den Charts zur Verfügung stehen. Die Anzahl der dem Benutzer zur Verfügung stehenden Balken wird durch den Parameter "Max. Balken im Chart" bestimmt.

Beim Erstellen des Objekts 'datetime' verwendet Python die lokale Zeitzone, MetaTrader 5 hingegen die Zeitzone von UTC (ohne Zeitverschiebung). Daher sollte 'datetime' in UTC-Zeit für die Funktionen erstellt werden, die die Zeit benötigen. Die Daten vom MetaTrader 5 Terminal haben UTC-Zeit.

Beispiel:

from datetime import datetime
import MetaTrader5 as mt5
# Datenanzeige des Pakets von MetaTrader 5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# Importieren des Moduls 'panda' für eine Darstellung der erhaltenen Daten in Tabellenform
import pandas as pd
pd.set_option('display.max_columns', 500# Anzahl der anzuzeigenden Spalten
pd.set_option('display.width', 1500)      # Maximale Tabellenbreite für die Anzeige
# Importieren der Moduls pytz für die Arbeit mit Zeitzonen
import pytz
 
# Verbindung herstellen zum MetaTrader 5 Terminal
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# Setzen der Zeitzone auf UTC
timezone = pytz.timezone("Etc/UTC")
# Erstellen des Objekts 'datetime' in der UTC-Zeitzone, um eine Verwendung der lokalen Zeitzone zu vermeiden
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
utc_to = datetime(2020, 1, 11, hour = 13, tzinfo=timezone)
# Abrufen der Bars von USDJPY M5 des Zeitintervalls 2020.01.10 00:00 - 2020.01.11 13:00 in UTC-Zeit
rates = mt5.copy_rates_range("USDJPY"mt5.TIMEFRAME_M5utc_from, utc_to)
 
# Schließen der Verbindung zum MetaTrader 5 Terminal
mt5.shutdown()
 
# Zeilenweise Darstellung von jedem Element der erhaltenen Daten
print("Display obtained data 'as is'")
counter=0
for rate in rates:
    counter+=1
    if counter<=10:
        print(rate)
 
# Erstellen des DataFrame aus den erhaltenen Daten
rates_frame = pd.DataFrame(rates)
# Konvertieren der Zeit in Sekunden in das Format 'datetime'
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
 
# Datenanzeige
print("\nDisplay dataframe with data")
print(rates_frame.head(10))
 
Ergebnis:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Datenanzeige 'as is'
(1578614400, 109.513, 109.527, 109.505, 109.521, 43, 2, 0)
(1578614700, 109.521, 109.549, 109.518, 109.543, 215, 8, 0)
(1578615000, 109.543, 109.543, 109.466, 109.505, 98, 10, 0)
(1578615300, 109.504, 109.534, 109.502, 109.517, 155, 8, 0)
(1578615600, 109.517, 109.539, 109.513, 109.527, 71, 4, 0)
(1578615900, 109.526, 109.537, 109.484, 109.52, 106, 9, 0)
(1578616200, 109.52, 109.524, 109.508, 109.51, 205, 7, 0)
(1578616500, 109.51, 109.51, 109.491, 109.496, 44, 8, 0)
(1578616800, 109.496, 109.509, 109.487, 109.5, 85, 5, 0)
(1578617100, 109.5, 109.504, 109.487, 109.489, 82, 7, 0)
 
Darstellung von dataframe mit Daten
                 time     open     high      low    close  tick_volume  spread  real_volume
0 2020-01-10 00:00:00  109.513  109.527  109.505  109.521           43       2            0
1 2020-01-10 00:05:00  109.521  109.549  109.518  109.543          215       8            0
2 2020-01-10 00:10:00  109.543  109.543  109.466  109.505           98      10            0
3 2020-01-10 00:15:00  109.504  109.534  109.502  109.517          155       8            0
4 2020-01-10 00:20:00  109.517  109.539  109.513  109.527           71       4            0
5 2020-01-10 00:25:00  109.526  109.537  109.484  109.520          106       9            0
6 2020-01-10 00:30:00  109.520  109.524  109.508  109.510          205       7            0
7 2020-01-10 00:35:00  109.510  109.510  109.491  109.496           44       8            0
8 2020-01-10 00:40:00  109.496  109.509  109.487  109.500           85       5            0
9 2020-01-10 00:45:00  109.500  109.504  109.487  109.489           82       7            0

Siehe auch

CopyRates, copy_rates_from, copy_rates_range, copy_ticks_from, copy_ticks_range