MT5CopyRatesFrom

Abrufen der Bars vom MetaTrader 5 Terminal, beginnend mit dem angegebenen Datum.

MT5CopyRatesFrom(
   symbol,       // Symbolname
   timeframe,    // Zeitrahmen
   from,         // Eröffnungszeitpunkt der ersten Bar
   count         // Anzahl der Bars
   )

Parameter

symbol

[in]  Name des Finanzinstruments, zum Beispiel "EURUSD".

timeframe

[in]  Zeitrahmen der benötigten Bars Es wird ein Wert der Enumeration MT5_TIMEFRAME ausgewählt und eingesetzt.

from

[in]  Eröffnungszeitpunkt der ersten Bar der gewünschten Zeitspanne. Ausgewählt und gesetzt durch ein Objekt vom Typ 'datetime' oder der Anzahl der Sekunden seit dem 1970.01.01.

count

[in]  Verlangte Anzahl der Bars.

Rückgabewert

Rückgabe der Bars als Array von Tupel (Zeit, Open, High, Low, Close, Tick_Volumen, Ppread, Real_Volumen).

Hinweis

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

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 aus MetaTrader 5 erhaltenen Daten haben UTC-Zeit, aber Python wendet beim Versuch, sie zu drucken, wieder die lokale Zeit (inkl. Verschiebung) an. Daher sollten die gewonnenen Daten auch für die visuelle Darstellung korrigiert werden.  

MT5_TIMEFRAME istdie Enumeration mit den erlaubten Werten für die Chartperiode.

ID

Beschreibung

MT5_TIMEFRAME_M1

1 Minute

MT5_TIMEFRAME_M2

2 Minuten

MT5_TIMEFRAME_M3

3 Minuten

MT5_TIMEFRAME_M4

4 Minuten

MT5_TIMEFRAME_M5

5 Minuten

MT5_TIMEFRAME_M6

6 Minuten

MT5_TIMEFRAME_M10

10 Minuten

MT5_TIMEFRAME_M12

12 Minuten

MT5_TIMEFRAME_M12

15 Minuten

MT5_TIMEFRAME_M20

20 Minuten

MT5_TIMEFRAME_M30

30 Minuten

MT5_TIMEFRAME_H1

1 Stunde

MT5_TIMEFRAME_H2

2 Stunden

MT5_TIMEFRAME_H3

3 Stunden

MT5_TIMEFRAME_H4

4 Stunden

MT5_TIMEFRAME_H6

6 Stunden

MT5_TIMEFRAME_H8

8 Stunden

MT5_TIMEFRAME_H12

12 Stunden

MT5_TIMEFRAME_D1

1 Tag

MT5_TIMEFRAME_W1

1 Woche

MT5_TIMEFRAME_MON1

1 Monat

 

Beispiel:

from datetime import datetime
from MetaTrader5 import *
# Importieren des Moduls 'pandas' für die 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 der Darstellung
# Importieren der Moduls pytz für die Arbeit mit Zeitzonen
import pytz
 
# Verbindung herstellen zum MetaTrader 5 Terminal
MT5Initialize()
# Warten, bis sich MetaTrader 5 Terminal mit dem Handelsserver verbindet
MT5WaitForTerminal()
 
# Setzen der Zeitzone auf UTC
timezone = pytz.timezone("Etc/UTC")
# Erstellen des Objekts 'datetime' in UTC-Zeit, um die lokale Zeitzone zu vermeiden
utc_from = datetime(201945tzinfo=timezone)
# Abrufen von Bars von EURUSD H4 ab dem 01.04.2019 in UTC-Zeit
rates = MT5CopyRatesFrom("EURUSD"MT5_TIMEFRAME_H4utc_from10)
 
# Schließen der Verbindung zum MetaTrader 5
MT5Shutdown()
# Anzeigen von jedem erhaltenen Datenelement in einer neuen Zeile
print("Anzeige der erhaltenen Daten 'as is'")
for rate in rates:
    print(rate)
 
# Erstellen von DataFrame aus den erhaltenen Daten
rates_frame = pd.DataFrame(list(rates),
                           columns=['time', 'open', 'low', 'high', 'close', 'tick_volume', 'spread', 'real_volume'])
# Datenanzeige
print("\nAnzeige von dataframe mit Daten")
print(rates_frame)  # wir können sehen, dass Python die Ticks in lokaler Zeit mit einer Zeitverschiebung anbietet
 
# Abfrage der Zeitverschiebung zur UTC-Zeit für die lokale Zeit des PC
UTC_OFFSET_TIMEDELTA = datetime.utcnow() - datetime.now()
 
# Erstellen einer einfachen Funktion, die die Zeitverschiebung korrigiert
def local_to_utc(dt):
    return dt + UTC_OFFSET_TIMEDELTA
 
# Anwenden des Zeitunterschieds in der Spalte 'time' im rates_frame dataframe
rates_frame['time'] = rates_frame.apply(lambda ratelocal_to_utc(rate['time']), axis=1)
 
# Nochmalige Anzeige der Daten, um sicher zu stellen, dass die Eröffnungszeiten der H4-Kerzen Vielfache von 4 sind
print("\nAnzeige von dataframe nach Zeitanpassung der Eröffnungszeit der Kerzen")
print(rates_frame)
 
Ergebnis:
Datenanzeige 'as is'
MT5Rate(time=datetime.datetime(2019, 4, 3, 15, 0), open=1.12431, low=1.12543, high=1.12335, close=1.12341, tick_volume=11735, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 3, 19, 0), open=1.12339, low=1.12487, high=1.12247, close=1.12439, tick_volume=15241, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 3, 23, 0), open=1.12439, low=1.12478, high=1.12311, close=1.12312, tick_volume=4973, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 3, 0), open=1.12324, low=1.12472, high=1.12318, close=1.1244, tick_volume=3099, spread=4, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 7, 0), open=1.1244, low=1.12451, high=1.12364, close=1.12406, tick_volume=3304, spread=4, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 11, 0), open=1.12406, low=1.12472, high=1.12302, close=1.12313, tick_volume=10119, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 15, 0), open=1.12313, low=1.12359, high=1.12122, close=1.12171, tick_volume=15098, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 19, 0), open=1.12171, low=1.12246, high=1.12056, close=1.12188, tick_volume=15369, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 23, 0), open=1.12187, low=1.12265, high=1.1213, close=1.12191, tick_volume=5156, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 5, 3, 0), open=1.12199, low=1.12286, high=1.1217, close=1.1222, tick_volume=3903, spread=4, real_volume=0)
 
Darstellung von dataframe mit Daten
                 time     open      low     high    close  tick_volume  spread  real_volume
0 2019-04-03 15:00:00  1.12431  1.12543  1.12335  1.12341        11735       8            0
1 2019-04-03 19:00:00  1.12339  1.12487  1.12247  1.12439        15241       8            0
2 2019-04-03 23:00:00  1.12439  1.12478  1.12311  1.12312         4973       8            0
3 2019-04-04 03:00:00  1.12324  1.12472  1.12318  1.12440         3099       4            0
4 2019-04-04 07:00:00  1.12440  1.12451  1.12364  1.12406         3304       4            0
5 2019-04-04 11:00:00  1.12406  1.12472  1.12302  1.12313        10119       8            0
6 2019-04-04 15:00:00  1.12313  1.12359  1.12122  1.12171        15098       8            0
7 2019-04-04 19:00:00  1.12171  1.12246  1.12056  1.12188        15369       8            0
8 2019-04-04 23:00:00  1.12187  1.12265  1.12130  1.12191         5156       8            0
9 2019-04-05 03:00:00  1.12200  1.12286  1.12170  1.12220         3903       4            0
 
Anzeige von dataframe nach Zeitanpassung der Eröffnungszeit der Kerzen 
                 time     open      low     high    close  tick_volume  spread  real_volume
0 2019-04-03 12:00:00  1.12431  1.12543  1.12335  1.12341        11735       8            0
1 2019-04-03 16:00:00  1.12339  1.12487  1.12247  1.12439        15241       8            0
2 2019-04-03 20:00:00  1.12439  1.12478  1.12311  1.12312         4973       8            0
3 2019-04-04 00:00:00  1.12324  1.12472  1.12318  1.12440         3099       4            0
4 2019-04-04 04:00:00  1.12440  1.12451  1.12364  1.12406         3304       4            0
5 2019-04-04 08:00:00  1.12406  1.12472  1.12302  1.12313        10119       8            0
6 2019-04-04 12:00:00  1.12313  1.12359  1.12122  1.12171        15098       8            0
7 2019-04-04 16:00:00  1.12171  1.12246  1.12056  1.12188        15369       8            0
8 2019-04-04 20:00:00  1.12187  1.12265  1.12130  1.12191         5156       8            0
9 2019-04-05 00:00:00  1.12200  1.12286  1.12170  1.12220         3903       4            0

Siehe auch

CopyRates, MT5CopyRatesFromPos, MT5CopyRatesRange, MT5CopyTicksFrom, MT5CopyTicksRange