positions_get

Abrufen der offenen Positionen, mit der Fähigkeit nach Symbol oder Ticket zu filtern. Es gibt drei Aufrufoptionen.

Aufruf ohne Parameter. Rückgabe der offenen Positionen aller Symbole.

positions_get()

Ein Abruf der offenen Positionen mit angegebenem Symbol.

positions_get(
   symbol="SYMBOL"      // Symbolname
)

Ein Abruf der offenen Positionen der angegebenen Symbolgruppe.

positions_get(
   group="GROUP"        // Filter zur Positionsauswahl nach Symbolen
)

Aufruf unter Angabe des Positionsticket.

positions_get(
   ticket=TICKET        // Ticket
)

Parameter

symbol="SYMBOL"

[in]  Symbolname. Optionale benannte Parameter. Wein ein Symbol angegeben ist, wird das Ticket ignoriert.

group="GROUP"

[in]  Der Filter für die Gruppe der angeforderten Symbole. Optionale benannte Parameter. Wenn die Gruppe angegeben wurde, liefert die Funktion nur die Positionen, die die angegebenen Kriterien für das Symbol erfüllen.

ticket=TICKET

[in]  Position ticket (POSITION_TICKET). Optionale benannte Parameter.

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 offenen Positionen innerhalb eines Anrufs, ähnlich wie bei dem Funktionspaar PositionsTotal und PositionSelect.

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 Positionen aller Symbole ausgewählt und diejenigen, die "EUR" in den Symbolnamen enthalten, danach ausgeschlossen werden.

Beispiel:

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()
 
# Abruf der offenen USDCHF-Positionen
positions=mt5.positions_get(symbol="USDCHF")
if positions==None:
    print("No positions on USDCHF, error code={}".format(mt5.last_error()))
elif len(positions)>0:
    print("Total positions on USDCHF =",len(positions))
    # Anzeige aller offenen Positionen
    for position in positions:
        print(position)
 
# Abrufen der Positionsliste aller Symbole mit "*USD*" im Namen
usd_positions=mt5.positions_get(group="*USD*")
if usd_positions==None:
    print("No positions with group=\"*USD*\", error code={}".format(mt5.last_error()))
elif len(usd_positions)>0:
    print("positions_get(group=\"*USD*\")={}".format(len(usd_positions)))
    # Anzeige dieser Positionen als Tabelle mittels pandas.DataFrame
    df=pd.DataFrame(list(usd_positions),columns=usd_positions[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], unit='s')
    df.drop(['time_update', 'time_msc', 'time_update_msc', 'external_id'], axis=1, inplace=True)
    print(df)
 
# Schließen der Verbindung zum MetaTrader 5
mt5.shutdown()
 
 
Ergebnis:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
positions_get(group="*USD*")=5
      ticket                time  type  magic  identifier  reason  volume  price_open       sl       tp  price_current  swap  profit  symbol comment
0  548297723 2020-03-18 15:00:55     1      0   548297723       3    0.01     1.09301  1.11490  1.06236        1.10104 -0.10   -8.03  EURUSD        
1  548655158 2020-03-18 20:31:26     0      0   548655158       3    0.01     1.08676  1.06107  1.12446        1.10099 -0.08   14.23  EURUSD        
2  548663803 2020-03-18 20:40:04     0      0   548663803       3    0.01     1.08640  1.06351  1.11833        1.10099 -0.08   14.59  EURUSD        
3  548847168 2020-03-19 01:10:05     0      0   548847168       3    0.01     1.09545  1.05524  1.15122        1.10099 -0.06    5.54  EURUSD        
4  548847194 2020-03-19 01:10:07     0      0   548847194       3    0.02     1.09536  1.04478  1.16587        1.10099 -0.08   11.26  EURUSD   

Siehe auch

positions_total, orders_get