MetaTrader 5 Python User Group - Comment utiliser Python dans Metatrader - page 64

 
ckeiderling :

Bonjour à tous,


J'espère que ça ne vous dérange pas qu'un Anglais soit là. Je cherche des conseils après avoir passé beaucoup de temps à chercher sur le web sans succès.

J'utilise la bibliothèque Python de MetaTrader5 après m'être inspiré des articles de Maxiums. J'ai remarqué un problème de gestion de la mémoire.

Lorsque je crée un Dataframe en utilisant la librairie mt5, le Dataframe résultant fonctionne comme prévu. Je l'ai fait dans une fonction qui collecte les ticks et effectue ensuite diverses analyses avant de sortir le df manipulé.

Cependant, si je réexécute la fonction qui crée le DataFrame, j'ai remarqué que la mémoire continue de s'accumuler depuis l'instance précédente.

J'obtiens le même problème en utilisant mt5.copy_ticks_range () et mt5.copy_rates_range (). Je dois réinitialiser le noyau pour effacer la mémoire.

J'obtiens le même problème même après avoir supprimé tout le code sauf la ligne créant le dataframe. Par exemple :

def vel (symbole, 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'])

Si je l'exécute plusieurs fois, l'utilisation de la mémoire augmente de 27MiB à chaque fois :

Line # 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), .


Ligne # Mem usage Increment Line Contents

Si vous voulez de l'aide pour le débogage, vous devrez passer un MVCE complet. Cet extrait n'est pas suffisant.

 
ckeiderling:

Bonjour à tous,


J'espère que vous ne voyez pas d'inconvénient à ce qu'un Anglais vienne ici. Je cherche des conseils après avoir passé beaucoup de temps à chercher sur le Web sans succès.

J'utilise la bibliothèque Python de MetaTrader5 après m'être inspiré des articles de Maxiums. J'ai remarqué un problème de gestion de la mémoire.

Lorsque je crée un Dataframe en utilisant la librairie mt5, le Dataframe résultant fonctionne comme prévu. Je l'ai fait dans une fonction qui collecte les ticks et effectue ensuite diverses analyses avant de sortir le df manipulé.

Cependant, si je réexécute la fonction qui crée le DataFrame, j'ai remarqué que la mémoire continue de s'accumuler depuis l'instance précédente.

J'obtiens le même problème en utilisant mt5.copy_ticks_range () et mt5.copy_rates_range (). Je dois réinitialiser le noyau pour effacer la mémoire.

J'obtiens le même problème même après avoir supprimé tout le code sauf la ligne créant le dataframe. Par exemple :

def vel (symbole, 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'])

Si je l'exécute plusieurs fois, l'utilisation de la mémoire augmente de 27 Mo à chaque fois :

Line # 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), .


Ligne # Mem usage Increment Line Contents

Vous pouvez essayer d'utiliserhttps://docs.python.org/3/library/gc.html

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

 

Bonjour à tous.
J'ai commencé à obtenir cette erreur en essayant de placer un ordre viaMetaTrader5.Buy() / Sell():

ordre_ouvert = mt5.Buy(symbole, volume)

Fichier "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", ligne 313, dans Buy

si r.retcode != TRADE_RETCODE_REQUOTE et r.retcode != TRADE_RETCODE_PRICE_OFF:

AttributeError : L'objet 'NoneType' ne possède pas d'attribut 'retcode'.


Pouvez-vous suggérer comment le corriger ?

Dossiers :
 
AxxelTrader:

Bonjour à tous.
Une telle erreur a commencé à apparaître lorsque vous avez essayé de passer un ordre via MetaTrader5.Buy () / Sell ( ) :

ordre_ouvert = mt5.Buy(symbole, volume)

Fichier "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", ligne 313, dans Buy

si r.retcode != TRADE_RETCODE_REQUOTE et r.retcode != TRADE_RETCODE_PRICE_OFF :

AttributeError : L'objet 'NoneType' ne possède pas d'attribut 'retcode'.


Pouvez-vous me dire comment le réparer ?

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

Quelle version du terminal utilisez-vous ?

Avez-vous mis à jour la version bêta ?

 
MetaQuotes:

Quelle version du terminal utilisez-vous ?

Avez-vous mis à jour la version bêta ?

J'ai mis à jour la dernière version - version du paquet MetaTrader5 : 5.0.31

Cette erreur se produit à la fois lors de l'utilisation de mt5.Buy(), mt5.Sell() et mt5.order_send(requests).

Il est également écrit qu'il n'y a pas d'attribut "retcode".

 
AxxelTrader:

J'ai mis à jour la dernière version - version du paquet MetaTrader5 : 5.0.31

Cette erreur se produit aussi bien lors de l'utilisation des fonctions mt5.Buy(), mt5.Sell() et mt5.order_send(requests).

Il est également écrit qu'il n'y a pas d'attribut "retcode".

La question portait sur la version terminale.

 
Renat Fatkhullin:

La question portait sur la version du terminal.

MT5 version : 5.00 build 2361 08 mar 2020

 
AxxelTrader:

MT5 version : 5.00 build 2361 08 mar 2020

Passez à la version bêta, s'il vous plaît.

Nouvelles fonctions disponibles uniquement dans les versions bêta.

 
Renat Fatkhullin:

Passez à la version bêta, s'il vous plaît.

Nouvelles fonctions disponibles uniquement dans les versions bêta.

Mise à niveau vers la version 2432.
Mais l'erreur est toujours là...
Je l'ai essayé sur différents courtiers, même...

Dossiers :