MetaTrader 5 Python User Group - Come usare Python in Metatrader - pagina 64

 
ckeiderling :

Ciao a tutti,


Spero che non vi dispiaccia che un inglese sia qui. Alla ricerca di una guida dopo aver passato molto tempo a cercare sul web senza successo.

Sto usando la libreria MetaTrader5 Python dopo qualche ispirazione dagli articoli di Maxiums. Ho notato un problema con la gestione della memoria.

Quando creo un Dataframe usando mt5 lib il dataframe risultante funziona come previsto. Ho fatto questo all'interno di una funzione che raccoglie i tick e poi esegue varie analisi prima di emettere il df manipolato.

Tuttavia, se rilancio la funzione che crea il DataFrame ho notato che la memoria continua ad accumularsi dall'istanza precedente.

Ottengo lo stesso problema usando mt5.copy_ticks_range () e mt5.copy_rates_range (). Devo resettare il kernel per cancellare la memoria.

Ottengo lo stesso problema anche dopo aver rimosso tutto il codice tranne la linea che crea il dataframe. Per esempio:

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

Se lo eseguo diverse volte, l'uso della memoria sale di 27MiB ogni volta:

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


Linea # Uso della memoria Incremento Linea Contenuto

Se volete aiuto per il debug, allora dovrete dare un MVCE completo. Questo frammento non è sufficiente.

 
ckeiderling:

Ciao a tutti,


Spero che non vi dispiaccia che un inglese sia qui, sto cercando una guida dopo aver passato molto tempo a cercare sul web senza successo.

Sto usando la libreria MetaTrader5 Python dopo aver tratto ispirazione dagli articoli di Maxiums. Ho notato un problema con la gestione della memoria.

Quando creo un Dataframe usando mt5 lib il dataframe risultante funziona come previsto. Ho fatto questo all'interno di una funzione che raccoglie i tick e poi esegue varie analisi prima di emettere il df manipolato.

Tuttavia, se rilancio la funzione che crea il DataFrame ho notato che la memoria continua ad accumularsi dall'istanza precedente.

Ottengo lo stesso problema usando mt5.copy_ticks_range () e mt5.copy_rates_range (). Devo resettare il kernel per cancellare la memoria.

Ottengo lo stesso problema anche dopo aver rimosso tutto il codice tranne la linea che crea il dataframe. Per esempio:

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

Se lo eseguo diverse volte, l'uso della memoria sale di 27MiB ogni volta:

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


Linea # Utilizzo della memoria Incremento Linea Contenuto

forse provate a usarehttps://docs.python.org/3/library/gc.html

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

 

Ciao a tutti.
Ho iniziato a ricevere questo errore quando cerco di piazzare un ordine tramiteMetaTrader5.Buy() / Sell():

order_open = mt5.Buy(simbolo, volume)

File "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", linea 313, in Buy

se r.retcode != TRADE_RETCODE_REQUOTE e r.retcode != TRADE_RETCODE_PRICE_OFF:

AttributeError: l'oggetto 'NoneType' non ha un attributo 'retcode'.


Potete suggerirmi come correggerlo?

 
AxxelTrader:

Ciao a tutti.
Tale errore ha cominciato ad apparire quando si cerca di piazzare un ordine attraverso MetaTrader5.Buy () / Sell ():

order_open = mt5.Buy(simbolo, volume)

File "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", linea 313, in Buy

se r.retcode != TRADE_RETCODE_REQUOTE e r.retcode != TRADE_RETCODE_PRICE_OFF:

AttributeError: l'oggetto 'NoneType' non ha un attributo 'retcode'.


Puoi dirmi come risolvere il problema?

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

Quale build del terminale usi?

Hai aggiornato alla versione beta?

 
MetaQuotes:

Quale build del terminale usi?

Hai aggiornato alla versione beta?

Ho aggiornato all'ultima versione del pacchetto MetaTrader5: 5.0.31

Questo errore si verifica sia quando si usa mt5.Buy(), mt5.Sell() e mt5.order_send(requests).

Scrive anche che non c'è un attributo "retcode".

 
AxxelTrader:

Ho aggiornato all'ultima versione del pacchetto MetaTrader5: 5.0.31

Questo errore si verifica sia quando si usano le funzioni mt5.Buy(), mt5.Sell() e mt5.order_send(requests).

Scrive anche che non c'è un attributo "retcode".

La domanda riguardava la versione terminale.

 
Renat Fatkhullin:

La domanda riguardava la versione del terminale.

MT5 versione: 5.00 build 2361 08 mar 2020

 
AxxelTrader:

MT5 versione: 5.00 build 2361 08 mar 2020

Aggiornate alla versione beta, per favore.

Nuove funzioni disponibili solo nelle versioni beta.

 
Renat Fatkhullin:

Aggiornate alla versione beta, per favore.

Nuove funzioni disponibili solo nelle versioni beta.

Aggiornato alla versione 2432.
Ma l'errore è ancora lì...
Provato su diversi broker anche...