MT5CopyTicksFrom

Abrufen von Ticks aus dem MetaTrader 5 Terminal ab dem angegebenen Zeitpunkt.

MT5CopyTicksFrom(
   symbol,       // Symbolname
   from,         // Zeitpunkt, ab dem die Ticks benötigt werden
   count,        // Anzahl der benötigten Ticks
   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.

count

[in]  Anzahl der benötigten Ticks.

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.

MT5_COPY_TICKS definiert den Typ der Ticks, die mit den Funktionen MT5CopyTicksFrom() und MT5CopyTicksRange() abgerufen werden können.

ID

Beschreibung

MT5_COPY_TICKS_ALL

alle Ticks

MT5_COPY_TICKS_INFO

Ticks mit Bid- und/oder Ask-Preisänderungen

MT5_COPY_TICKS_TRADE

Ticks mit letzter Preisänderung und/oder Volumensänderung

MT5_TICK_FLAG definiert die möglichen Flags der Ticks. Diese Flags werden verwendet, um die Ticks mit den Funktionen MT5CopyTicksFrom() und MT5CopyTicksRange() abzufragen.

ID

Beschreibung

MT5_TICK_FLAG_BID

Bid-Preisänderung

MT5_TICK_FLAG_ASK

Ask-Preisänderung

MT5_TICK_FLAG_LAST

Letzte Preisänderung

MT5_TICK_FLAG_VOLUME

Volumensänderung

MT5_TICK_FLAG_BUY

letzte Kaufpreisänderung

MT5_TICK_FLAG_SELL

letzte Verkaufpreisänderung

 

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 lokale Zeitzone zu vermeiden
utc_from = datetime(2019, 4, 1, tzinfo=timezone)
# Abrufen von 100 000 Ticks für EURUSD ab 01.04.2019 in UTC-Zeit
ticks = MT5CopyTicksFrom("EURUSD"utc_from100000, MT5_COPY_TICKS_ALL)
print("Ticks erhalten:",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: 100000
Anzeige der erhaltenen Ticks 'as is'
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 5, 745000), bid=1.12258, ask=1.12339, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 26, 155000), bid=1.12260, ask=1.12339, last=0.0, volume=0.0, flags=130)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 26, 497000), bid=1.12272, ask=1.12339, last=0.0, volume=0.0, flags=130)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 34, 327000), bid=1.12268, ask=1.12336, last=0.0, volume=0.0, flags=134)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 35, 61000), bid=1.12268, ask=1.12339, last=0.0, volume=0.0, flags=4)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 35, 369000), bid=1.12258, ask=1.12339, last=0.0, volume=0.0, flags=130)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 40, 577000), bid=1.12258, ask=1.12336, last=0.0, volume=0.0, flags=4)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 46, 494000), bid=1.1225, ask=1.12336, last=0.0, volume=0.0, flags=130)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 47, 288000), bid=1.12248, ask=1.12336, last=0.0, volume=0.0, flags=130)
MT5Tick(time=datetime.datetime(2019, 4, 1, 3, 2, 56, 114000), bid=1.1225, ask=1.12336, last=0.0, volume=0.0, flags=130)
 
Darstellung von dataframe mit Ticks
                     time      bid      ask  last  volume  flags
0 2019-04-01 03:02:05.745  1.12258  1.12339   0.0     0.0    134
1 2019-04-01 03:02:26.155  1.12261  1.12339   0.0     0.0    130
2 2019-04-01 03:02:26.497  1.12272  1.12339   0.0     0.0    130
3 2019-04-01 03:02:34.327  1.12268  1.12336   0.0     0.0    134
4 2019-04-01 03:02:35.061  1.12268  1.12339   0.0     0.0      4
5 2019-04-01 03:02:35.369  1.12258  1.12339   0.0     0.0    130
6 2019-04-01 03:02:40.577  1.12258  1.12336   0.0     0.0      4
7 2019-04-01 03:02:46.494  1.12250  1.12336   0.0     0.0    130
8 2019-04-01 03:02:47.288  1.12248  1.12336   0.0     0.0    130
9 2019-04-01 03:02:56.114  1.12250  1.12336   0.0     0.0    130
 
Anzeige von dataframe der Ticks nach der Zeitanpassung
                     time      bid      ask  last  volume  flags
0 2019-04-01 00:02:05.745  1.12258  1.12339   0.0     0.0    134
1 2019-04-01 00:02:26.155  1.12261  1.12339   0.0     0.0    130
2 2019-04-01 00:02:26.497  1.12272  1.12339   0.0     0.0    130
3 2019-04-01 00:02:34.327  1.12268  1.12336   0.0     0.0    134
4 2019-04-01 00:02:35.061  1.12268  1.12339   0.0     0.0      4
5 2019-04-01 00:02:35.369  1.12258  1.12339   0.0     0.0    130
6 2019-04-01 00:02:40.577  1.12258  1.12336   0.0     0.0      4
7 2019-04-01 00:02:46.494  1.12250  1.12336   0.0     0.0    130
8 2019-04-01 00:02:47.288  1.12248  1.12336   0.0     0.0    130
9 2019-04-01 00:02:56.114  1.12250  1.12336   0.0     0.0    130

Siehe auch

CopyRates, MT5CopyRatesFromPos, MT5CopyRatesRange, MT5CopyTicksFrom, MT5CopyTicksRange