MetaTrader 5 Python User Group - wie man Python in Metatrader verwendet - Seite 64

 
ckeiderling :

Hallo zusammen,


Ich hoffe, Sie haben nichts dagegen, dass ein Engländer hier ist. Nachdem ich viel Zeit mit der erfolglosen Suche im Internet verbracht habe, suche ich nach einer Orientierungshilfe.

Ich verwende die MetaTrader5 Python-Bibliothek, nachdem ich mich von Maxiums Artikeln inspirieren ließ. Ich habe ein Problem mit der Speicherverwaltung festgestellt.

Wenn ich einen Dataframe mit mt5 lib mache, funktioniert der resultierende Dataframe wie erwartet. Ich habe dies innerhalb einer Funktion getan, die die Ticks sammelt und dann verschiedene Analysen durchführt, bevor sie das manipulierte df ausgibt.

Wenn ich jedoch die Funktion, die den DataFrame erstellt, erneut ausführe, stelle ich fest, dass sich der Speicher aus der vorherigen Instanz einfach weiter aufbaut.

Ich habe das gleiche Problem mit mt5.copy_ticks_range () und mt5.copy_rates_range (). Ich muss den Kernel zurücksetzen, um den Speicher zu löschen.

Ich habe das gleiche Problem, auch wenn ich den gesamten Code mit Ausnahme der Zeile, die den Datenrahmen erstellt, entfernt habe. Zum Beispiel:

def vel (symbol, lookback, lookforward, start_date, end_date, quantile_size):

ticks = pd.DataFrame (mt5.copy_ticks_range (symbol, datetime (start_date.year, start_date.month, start_date.day), datetime (end_date.year, end_date.month, end_date.day), mt5.COPY_TICKS_ALL), columns = [ 'time', 'bid', 'ask', 'last', 'volume', 'time_msc', 'flags', 'volume_real'])

Wenn ich dies mehrmals ausführe, steigt der Speicherverbrauch jedes Mal um 27MiB:

Zeile # Mem usage Increment Line Contents =========================================== ======= 126.3 MiB 126.3 MiB def vel (symbol, lookback, lookforward, start_date, end_date, quantile_size): 153.3 MiB 26.9 MiB ticks = pd.DataFrame (mt5.copy_ticks_range (symbol, datetime (start_date.year, start_date .month, start_date.day), .


Zeile # Speicherverbrauch Inkrement Zeile Inhalt

Wenn Sie Hilfe bei der Fehlersuche wünschen, müssen Sie einen vollständigen MVCE eingeben. Dieser Ausschnitt ist nicht ausreichend.

 
ckeiderling:

Hallo zusammen,


Ich hoffe, Sie haben nichts gegen einen Engländer, der nach langer erfolgloser Suche im Internet nach einer Orientierungshilfe sucht.

Ich verwende die MetaTrader5 Python-Bibliothek, nachdem ich mich von Maxiums Artikeln inspirieren ließ, und habe ein Problem mit der Speicherverwaltung festgestellt.

Wenn ich einen Dataframe mit mt5 lib mache, funktioniert der resultierende Dataframe wie erwartet. Ich habe dies innerhalb einer Funktion getan, die die Ticks sammelt und dann verschiedene Analysen durchführt, bevor sie das manipulierte df ausgibt.

Wenn ich jedoch die Funktion, die den DataFrame erstellt, erneut ausführe, stelle ich fest, dass sich der Speicher aus der vorherigen Instanz einfach weiter aufbaut.

Ich habe das gleiche Problem mit mt5.copy_ticks_range () und mt5.copy_rates_range (). Ich muss den Kernel zurücksetzen, um den Speicher zu löschen.

Ich habe das gleiche Problem, auch wenn ich den gesamten Code mit Ausnahme der Zeile, die den Datenrahmen erstellt, entfernt habe. Zum Beispiel:

def vel (symbol, lookback, lookforward, start_date, end_date, quantile_size):

ticks = pd.DataFrame (mt5.copy_ticks_range (symbol, datetime (start_date.year, start_date.month, start_date.day), datetime (end_date.year, end_date.month, end_date.day), mt5.COPY_TICKS_ALL), columns = [ 'time', 'bid', 'ask', 'last', 'volume', 'time_msc', 'flags', 'volume_real'])

Wenn ich dies mehrmals ausführe, steigt der Speicherverbrauch jedes Mal um 27MiB:

Zeile # Mem usage Increment Line Contents ================================================== 126.3 MiB 126.3 MiB def vel (symbol, lookback, lookforward, start_date, end_date, quantile_size): 153.3 MiB 26.9 MiB ticks = pd.DataFrame (mt5.copy_ticks_range (symbol, datetime (start_date.year, start_date.month, start_date.day), .


Zeile # Speicherverbrauch Inkrement Zeile Inhalt

vielleicht versuchen Sie es mithttps://docs.python.org/3/library/gc.html

https://stackabuse.com/basics-of-memory-management-in-python/

 

Hallo zusammen.
Ich erhalte diesen Fehler, wenn ich versuche, eine Order überMetaTrader5.Buy() / Sell() zu platzieren:

order_open = mt5.Buy(Symbol, Volumen)

Datei "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", Zeile 313, in Kaufen

wenn r.retcode != TRADE_RETCODE_REQUOTE und r.retcode != TRADE_RETCODE_PRICE_OFF:

AttributeError: Das Objekt 'NoneType' hat kein Attribut 'retcode'.


Können Sie vorschlagen, wie man das korrigieren kann?

 
AxxelTrader:

Hallo zusammen.
Ein solcher Fehler trat auf, als ich versuchte, eine Order über MetaTrader5.Buy () / Sell () zu platzieren:

order_open = mt5.Buy(Symbol, Volumen)

Datei "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", Zeile 313, in Kaufen

wenn r.retcode != TRADE_RETCODE_REQUOTE und r.retcode != TRADE_RETCODE_PRICE_OFF:

AttributeError: Das Objekt 'NoneType' hat kein Attribut 'retcode'.


Können Sie mir sagen, wie man das beheben kann?

r = mt5.Buy(...)
if r is None:
    print(mt5.last_error())
else:
    if r.retcode ...
 

Welche Version des Terminals verwenden Sie?

Haben Sie auf die Beta-Version aktualisiert?

 
MetaQuotes:

Welche Version des Terminals verwenden Sie?

Haben Sie auf die Beta-Version aktualisiert?

Ich habe auf die neueste - MetaTrader5-Paketversion aktualisiert: 5.0.31

Dieser Fehler tritt sowohl bei der Verwendung von mt5.Buy(), mt5.Sell() und mt5.order_send(requests) auf.

Er schreibt auch, dass es kein Attribut "retcode" gibt.

 
AxxelTrader:

Ich habe auf die neueste - MetaTrader5-Paketversion aktualisiert: 5.0.31

Dieser Fehler tritt sowohl bei der Verwendung der Funktionen mt5.Buy(), mt5.Sell() und mt5.order_send(requests) auf.

Er schreibt auch, dass es kein Attribut "retcode" gibt.

Die Frage bezog sich auf die Terminalversion.

 
Renat Fatkhullin:

Die Frage bezog sich auf die Version des Terminals.

MT5 Version: 5.00 build 2361 08 mar 2020

 
AxxelTrader:

MT5 Version: 5.00 build 2361 08 mar 2020

Aktualisieren Sie bitte auf die Beta-Version.

Neue Funktionen sind nur in Beta-Versionen verfügbar.

 
Renat Fatkhullin:

Aktualisieren Sie bitte auf die Beta-Version.

Neue Funktionen sind nur in Beta-Versionen verfügbar.

Ich habe auf Version 2432 aktualisiert.
Aber der Fehler ist immer noch da...
Habe es sogar bei verschiedenen Brokern versucht...

Grund der Beschwerde: