MT5CopyTicksRange

Abrufen der Ticks der angegebenen Zeitspanne vom MetaTrader 5 Terminal.

MT5CopyTicksRange(
   symbol,       // Symbolname
   from,         // Zeitpunkt, ab dem die Ticks benötigt werden
   to,           // Zeitpunkt, bis zu dem die Ticks benötigt werden.
   flags         // Kombination der Flags, die den Typ der benötigten Ticks spezifizieren
   )

Parameter

symbol

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

from

[in]  Zeitpunkt, ab dem die Ticks benötigt werden. Ausgewählt und gesetzt durch ein Objekt vom Typ 'datetime' oder der Anzahl der Sekunden seit dem 1970.01.01.

to

[in]  Zeitpunkt, bis zu dem die Bars benötigt werden. Ausgewählt und gesetzt durch ein Objekt vom Typ 'datetime' oder der Anzahl der Sekunden seit dem 1970.01.01.

flags

[in]  Die Flag, die den Typ der benötigten Ticks spezifiziert. MT5_COPY_TICKS_INFO – Ticks mit Bid- und/oder Ask-Preisänderungen, MT5_COPY_TICKS_TRADE – Ticks mit der letzten Preisänderung und Volumensänderung, MT5_COPY_TICKS_ALL – alle Ticks. Die Werte des Flags werden in der Enumeration MT5_COPY_TICKS beschrieben.

Rückgabewert

Die Ticks werden in Form von Tupel (time, bid, ask, last, flags) zurückgegeben.  Im Tupel ist der Wert des Flags eine Kombination der Enumeration MT5_TICK_FLAG.

Hinweis

Siehe die Funktion CopyTicks für weitere Informationen.

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.

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 MetaTrader 5 Terminal sich mit dem Handelsserver verbindet
MT5WaitForTerminal()
 
# Setzen der Zeitzone auf UTC
timezone = pytz.timezone("Etc/UTC")
# Erstellen des Objekts 'datetime' in UTC-Zeit, um die Zeitverschiebung der lokalen Zeitzone zu verhindern
utc_from = datetime(2019, 4, 1, tzinfo=timezone)
utc_to = datetime(2019, 4, 5, tzinfo=timezone)
# Abrufen von Ticks von AUDUSD zwischen 2019.04.01 - 2019.04.02
ticks = MT5CopyTicksFrom("EURUSD"utc_from, utc_to, MT5_COPY_TICKS_ALL)
print("Ticks received:",len(ticks))
 
># Schließen der Verbindung zum MetaTrader 5
MT5Shutdown()
# Datenanzeige von jedem Tick in einer neuen Zeile
print("Anzeige der erhaltenen Ticks 'as is'")
count = 0
for tick in ticks:
    print(tick)
    if(count >= 10):
        break
 
# Erstellen von DataFrame aus den erhaltenen Daten
ticks_frame = pd.DataFrame(list(ticks),
                           columns=['time', 'bid', 'ask', 'last', 'volume', 'flags'])
# Datenanzeige
print("\nAnzeige von dataframe mit Ticks")
print(ticks_frame.head(10))  # 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 der Zeitverschiebung auf die Spalte 'time' im ticks_frame dataframe
ticks_frame['time'] = ticks_frame.apply(lambda ticklocal_to_utc(tick['time']), axis=1)
 
# Nochmalige Datenanzeige, um sicher zu stellen, dass die Tickzeit sich geändert hat
print("\nAnzeige von dataframe nach Zeitanpassung")
print(ticks_frame.head(10))
 
Ergebnis:
Ticks erhalten: 243374
Anzeige der erhaltenen Ticks 'as is'
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 2, 759000), bid=0.71155, ask=0.71223, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 7, 824000), bid=0.71154, ask=0.71222, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 27, 818000), bid=0.71155, ask=0.71223, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 43, 794000), bid=0.71159, ask=0.71204, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 44, 67000), bid=0.71145, ask=0.71209, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 44, 140000), bid=0.71157, ask=0.71223, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 44, 432000), bid=0.71157, ask=0.71225, last=0.0, volume=0.0, flags=4)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 44, 872000), bid=0.71159, ask=0.71204, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 45, 164000), bid=0.71148, ask=0.7121, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 45, 244000), bid=0.71158, ask=0.71223, last=0.0, volume=0.0, flags=134)
 
Darstellung von dataframe mit Ticks
                     time      bid      ask  last  volume  flags
0 2019-04-01 03:02:02.759  0.71155  0.71223   0.0     0.0    134
1 2019-04-01 03:02:07.824  0.71154  0.71222   0.0     0.0    134
2 2019-04-01 03:02:27.818  0.71155  0.71223   0.0     0.0    134
3 2019-04-01 03:02:43.794  0.71159  0.71204   0.0     0.0    134
4 2019-04-01 03:02:44.067  0.71145  0.71209   0.0     0.0    134
5 2019-04-01 03:02:44.140  0.71157  0.71223   0.0     0.0    134
6 2019-04-01 03:02:44.432  0.71157  0.71225   0.0     0.0      4
7 2019-04-01 03:02:44.872  0.71159  0.71204   0.0     0.0    134
8 2019-04-01 03:02:45.164  0.71148  0.71210   0.0     0.0    134
9 2019-04-01 03:02:45.244  0.71158  0.71223   0.0     0.0    134
 
Anzeige von dataframe der Ticks nach der Zeitanpassung
                     time      bid      ask  last  volume  flags
0 2019-04-01 00:02:02.759  0.71155  0.71223   0.0     0.0    134
1 2019-04-01 00:02:07.824  0.71154  0.71222   0.0     0.0    134
2 2019-04-01 00:02:27.818  0.71155  0.71223   0.0     0.0    134
3 2019-04-01 00:02:43.794  0.71159  0.71204   0.0     0.0    134
4 2019-04-01 00:02:44.067  0.71145  0.71209   0.0     0.0    134
5 2019-04-01 00:02:44.140  0.71157  0.71223   0.0     0.0    134
6 2019-04-01 00:02:44.432  0.71157  0.71225   0.0     0.0      4
7 2019-04-01 00:02:44.872  0.71159  0.71204   0.0     0.0    134
8 2019-04-01 00:02:45.164  0.71148  0.71210   0.0     0.0    134
9 2019-04-01 00:02:45.244  0.71158  0.71223   0.0     0.0    134

Siehe auch

CopyRates, MT5CopyRatesFromPos, MT5CopyRatesRange, MT5CopyTicksFrom, MT5CopyTicksRange