Keine Deals via Python

 

Hi,

wenn ich das hier mache: https://www.mql5.com/en/docs/integration/python_metatrader5/mt5historydealsget_py
bekomme ich zwar die number of deals, aber hiervon:

# get deals for symbols whose names contain neither "EUR" nor "GBP"
deals = mt5.history_deals_get(from_date, to_date, group="*,!*EUR*,!*GBP*")
if deals == None:
    print("No deals, error code={}".format(mt5.last_error()))
elif len(deals) > 0:
    print("history_deals_get(from_date, to_date, group=\"*,!*EUR*,!*GBP*\") =", len(deals))
    # display all obtained deals 'as is'
    for deal in deals:
        print("  ",deal)
    print()
    # display these deals as a table using pandas.DataFrame
    df=pd.DataFrame(list(deals),columns=deals[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], unit='s')
    print(df)
print("")

bekomme ich nichts. Ich

müsste, da ich gerade 22 Deals habe, den elif bekommen, aber es kommt nichts. Einen Tipp vielleicht mal wieder?


und hiervon:

# get the number of deals in history
from_date=datetime(2023,1,1)
to_date=datetime.now()
deals=mt5.history_deals_total(from_date, to_date)
if deals>0:
    print("Total deals=",deals)
else:
    print("Deals not found in history")

bekomme ich:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[5], line 5
      3 to_date=datetime.now()
      4 deals=mt5.history_deals_total(from_date, to_date)
----> 5 if deals>0:
      6     print("Total deals=",deals)
      7 else:

TypeError: '>' not supported between instances of 'NoneType' and 'int'

also eben waren es noch 22.. ich glaube, die ganze API ist instabil.. oder es liegt am Broker.. 

Documentation on MQL5: Integration / MetaTrader for Python / history_deals_get
Documentation on MQL5: Integration / MetaTrader for Python / history_deals_get
  • www.mql5.com
history_deals_get - MetaTrader for Python - Integration - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
Ich habe  keine Erfahrung mit Python - aber gibt es da keinen Debugger? Gibt es Fehlermeldungen? Gibt es denn die History normal über MQL5?
 
Christian Linden:

Hi,

wenn ich das hier mache: https://www.mql5.com/en/docs/integration/python_metatrader5/mt5historydealsget_py
bekomme ich zwar die number of deals, aber hiervon:

bekomme ich nichts. Ich

müsste, da ich gerade 22 Deals habe, den elif bekommen, aber es kommt nichts. Einen Tipp vielleicht mal wieder?


und hiervon:

bekomme ich:

also eben waren es noch 22.. ich glaube, die ganze API ist instabil.. oder es liegt am Broker.. 

Habe gerade den Beispiel code von MQ getestest.

Lib 5.00.44


10 x hintereinander , funktioniert.

Du hast oben ein Fehler drin. Im Beispiel wird die Länge vom Objekt Deals verglichen


elif len(deals)> 0:

Unten hast nur die Deals mit 0 verglichen was nicht geht. Verschieden Objekte, deswegen die Fehlermeldung.

if deals>0:
 
Carl Schreiber #:
Ich habe  keine Erfahrung mit Python - aber gibt es da keinen Debugger? Gibt es Fehlermeldungen? Gibt es denn die History normal über MQL5?

Das JupyterNoteBook hat einfach nur geschwiegen, habe es jetzt in vscode gemacht, da läuft's; aber auch erst beim 2tn Versuch; ich denke, der Broker liefert zaghaft, das hängt oft. Leider kommt keine entsprechende Fehlermeldung.

 
Christian #:

Habe gerade den Beispiel code von MQ getestest.

Lib 5.00.44


10 x hintereinander , funktioniert.

Du hast oben ein Fehler drin. Im Beispiel wird die Länge vom Objekt Deals verglichen


Unten hast nur die Deals mit 0 verglichen was nicht geht. Verschieden Objekte, deswegen die Fehlermeldung.

oh joh.. hab es nicht gecheckt, dass deals eine Struktur ist.. " if deals==None:" prüft nur, ob überhaupt was in der Struktur drin ist, richtig?

Danke..

 
Christian Linden #:

oh joh.. hab es nicht gecheckt, dass deals eine Struktur ist.. " if deals==None:" prüft nur, ob überhaupt was in der Struktur drin ist, richtig?

Danke..

Korrekt, es wird nur das Objekt erstellt, wenn es Deals gibt.

Len 0   gibt es nicht.

 
Christian #:

Korrekt, es wird nur das Objekt erstellt, wenn es Deals gibt.

Len 0   gibt es nicht.

Hab da was falsches gesagt. Eben noch mal den Debugge angeworfen und Deals kann sowohl len 0 sein.

 
Christian Linden #:

Das JupyterNoteBook hat einfach nur geschwiegen, habe es jetzt in vscode gemacht, da läuft's; aber auch erst beim 2tn Versuch; ich denke, der Broker liefert zaghaft, das hängt oft. Leider kommt keine entsprechende Fehlermeldung.

Ich nutze vorzugsweise PyCharm oder VScode

 
Christian #:

Hab da was falsches gesagt. Eben noch mal den Debugge angeworfen und Deals kann sowohl len 0 sein.

len(deals) kann 0 sein, aber deal halt nicht.

 
Christian #:

Ich nutze vorzugsweise PyCharm oder VScode

Ich auch, wobei ich gerade kein PyCharm-Lizenz mehr habe, daher vscode.

 
Christian #:

Ich nutze vorzugsweise PyCharm oder VScode

Wobei VScode nicht zu gebrauchen ist, ich habe ein Env mit Py3.8 für das MetaTrader5 Modul und der Kernel stürzt um etliches mehr ab als er läuft =(