history_orders_get

Abrufen der Orders in der Handelshistorie, mit der Fähigkeit nach Ticket oder Position zu filtern Es gibt drei Aufrufoptionen.

Aufruf unter Angabe eines Zeitintervalls. Rückgabe aller Orders innerhalb des angegebenen Zeitraums.

history_orders_get(
   date_from,                // Zeitpunkt, ab dem die Orders abgerufen werden
   date_to,                  // Zeitpunkt, bis zu dem die Orders angefordert werden
   group="GROUP"        // Filter zu Selektion der Orders nach Symbolen
   )

Aufruf unter Angabe des Orderticket. Rückgabe einer Order mit dem angegebenen Ticket.

positions_get(
   ticket=TICKET        // Orderticket
)

Aufruf unter Angabe des Positionsticket. Rückgabe aller Orders mit dem angebenden Positionsticket der Eigenschaft ORDER_POSITION_ID.

positions_get(
   position=POSITION    // Positionsticket
)

Parameter

date_from

[in]  Zeitpunkt, ab dem die Orders angefordert werden. Ausgewählt und gesetzt durch ein Objekt vom Typ 'datetime' oder der Anzahl der Sekunden seit dem 1970.01.01. Benötigter unbenannter Parameter werden als erstes angegeben.

date_to

[in]  Zeitpunkt, bis zu dem die Orders angefordert werden. Ausgewählt und gesetzt durch ein Objekt vom Typ 'datetime' oder der Anzahl der Sekunden seit dem 1970.01.01. Benötigter unbenannter Parameter werden als zweites angegeben.

group="GROUP"

[in]  Der Filter für die Gruppe der angeforderten Symbole. Optionale benannte Parameter. Wenn die Gruppe angegeben ist, gibt die Funktion nur Orders zurück, die ein bestimmtes Kriterium für einen Symbolnamen erfüllen.

ticket=TICKET

[in]  Order-Ticket, das erhalten werden sollte. Optionaler Parameter. Wenn nicht angegeben, wird der Filter nicht angewendet.

position=POSITION

[in]  Ticket einer Position (gespeichert in ORDER_POSITION_ID), die alle Orders erhalten sollen. Optionaler Parameter. Wenn nicht angegeben, wird der Filter nicht angewendet.

Rückgabewert

Rückgabe der Information als Struktur eines benannten Tupels (namedtuple). Im Falle eines Fehlers wird nichts zurückgegeben. Die Information über den Fehler kann über last_error() abgerufen werden.

Hinweis

Die Funktion ermöglicht den Empfang aller Orders der Historie innerhalb eines bestimmten Zeitraums in einem einzigen Aufruf, ähnlich wie bei HistoryOrdersTotal und HistoryOrderSelect.

Der Parameter group kann mehrere durch Komma getrennte Bedingungen enthalten. Eine Bedingung kann mit '*' als Maske gesetzt werden. Das logische Negationssymbol '!' kann für einen Ausschluss verwendet werden. Alle Bedingungen werden sequentiell angewendet, d.h. Bedingungen der Aufnahme in eine Gruppe sollten zuerst angegeben werden, gefolgt von einer Ausschlussbedingung. Zum Beispiel bedeutet group="*, !EUR", dass zuerst alle Deals aller Symbole ausgewählt und diejenigen, die "EUR" in den Symbolnamen enthalten, danach ausgeschlossen werden.

Beispiel:

from datetime import datetime
import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns'500# darzustellende Spaltenanzahl
pd.set_option('display.width', 1500)      # maximale darzustellende Tabellenbreite
# Datenanzeige des Pakets von MetaTrader 5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
print()
# Verbindung zum MetaTrader 5 Terminal herstellen
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# Abrufen der Anzahl der Orders in der Historie
from_date=datetime(2020,1,1)
to_date=datetime.now()
history_orders=mt5.history_orders_get(from_date, to_date, group="*GBP*")
if history_orders==None:
    print("No history orders with group=\"*GBP*\", error code={}".format(mt5.last_error()))
elif len(history_orders)>0:
    print("history_orders_get({}, {}, group=\"*GBP*\")={}".format(from_date,to_date,len(history_orders)))
print()
 
# Anzeige aller historischen Orders nach dem Positionsticket
position_id=530218319
position_history_orders=mt5.history_orders_get(position=position_id)
if position_history_orders==None:
    print("No orders with position #{}".format(position_id))
    print("error code =",mt5.last_error())
elif len(position_history_orders)>0:
    print("Total history orders on position #{}: {}".format(position_id,len(position_history_orders)))
   # Anzeige aller historischen Orders mit dem angegebenen Positionsticket
    for position_order in position_history_orders:        
        print(position_order)
    print()
    # Darstellung der Orders als Tabelle mittels pandas.DataFrame
    df=pd.DataFrame(list(position_history_orders),columns=position_history_orders[0]._asdict().keys())
    df.drop(['time_expiration','type_time','state','position_by_id','reason','volume_current','price_stoplimit','sl','tp'], axis=1, inplace=True)
    df['time_setup'] = pd.to_datetime(df['time_setup'], unit='s')
    df['time_done'] = pd.to_datetime(df['time_done'], unit='s')
    print(df)
 
# Schließen der Verbindung zum MetaTrader 5
mt5.shutdown()
 
Ergebnis:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
history_orders_get(2020-01-01 00:00:00, 2020-03-25 17:17:32.058795, group="*GBP*")=14
 
Total history orders on position #530218319: 2
TradeOrder(ticket=530218319, time_setup=1582282114, time_setup_msc=1582282114681, time_done=1582303777, time_done_msc=1582303777582, time_expiration=0, ...
TradeOrder(ticket=535548147, time_setup=1583176242, time_setup_msc=1583176242265, time_done=1583176242, time_done_msc=1583176242265, time_expiration=0, ...
 
      ticket          time_setup  time_setup_msc           time_done  time_done_msc  type  type_filling  magic  position_id  volume_initial  price_open  price_current  symbol comment external_id
0  530218319 2020-02-21 10:48:34   1582282114681 2020-02-21 16:49:37  1582303777582     2             2      0    530218319            0.01     0.97898        0.97863  USDCHF                    
1  535548147 2020-03-02 19:10:42   1583176242265 2020-03-02 19:10:42  1583176242265     1             0      0    530218319            0.01     0.95758        0.95758  USDCHF   

Siehe auch

history_deals_total, history_deals_get