Grupo de usuarios de MetaTrader 5 Python - cómo utilizar Python en Metatrader - página 64

 
ckeiderling :

Hola a todos,


Espero que no le moleste que haya un inglés aquí. Buscando un poco de orientación después de pasar mucho tiempo buscando en la web sin éxito.

Estoy usando la librería Python de MetaTrader5 después de inspirarme en los artículos de Maxiums. He notado un problema con el manejo de la memoria.

Cuando hago un Dataframe usando mt5 lib el dataframe resultante funciona como se espera. Lo he hecho dentro de una función que recoge los ticks y luego realiza varios análisis antes de dar salida al df manipulado.

Sin embargo, si vuelvo a ejecutar la función que crea el DataFrame he notado que la memoria se sigue acumulando desde la instancia anterior.

Tengo el mismo problema usando mt5.copy_ticks_range () y mt5.copy_rates_range (). Tengo que reiniciar el kernel para borrar la memoria.

Tengo el mismo problema incluso después de eliminar todo el código excepto la línea que crea el marco de datos. Por ejemplo:

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'])

Si ejecuto esto varias veces, el uso de memoria sube 27MiB cada vez:

Línea # Uso de la memoria Incremento Contenido de la línea =========================================== ======= 126,3 MiB 126,3 MiB def vel (símbolo, lookback, lookforward, fecha_inicial, fecha_final, quantile_size): 153,3 MiB 26,9 MiB ticks = pd.DataFrame (mt5.copy_ticks_range (símbolo, datetime (fecha_inicial.año, fecha_inicial.mes, fecha_inicial.día), .


Línea # Uso de la memoria Incremento del contenido de la línea

Si quieres ayuda para depurar, tendrás que dar un MVCE completo. Este fragmento no es suficiente.

 
ckeiderling:

Hola a todos,


Espero que no te moleste que un inglés esté aquí. Buscando algo de orientación después de pasar mucho tiempo buscando en la web sin éxito.

Estoy usando la librería Python de MetaTrader5 después de inspirarme en los artículos de Maxiums. He notado un problema con el manejo de la memoria.

Cuando hago un Dataframe usando mt5 lib el dataframe resultante funciona como se espera. Lo he hecho dentro de una función que recoge los ticks y luego realiza varios análisis antes de dar salida al df manipulado.

Sin embargo, si vuelvo a ejecutar la función que crea el DataFrame he notado que la memoria se sigue acumulando desde la instancia anterior.

Tengo el mismo problema usando mt5.copy_ticks_range () y mt5.copy_rates_range (). Tengo que reiniciar el kernel para borrar la memoria.

Tengo el mismo problema incluso después de eliminar todo el código excepto la línea que crea el marco de datos. Por ejemplo:

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'])

Si ejecuto esto varias veces, el uso de memoria sube 27MiB cada vez:

Línea # Uso de memoria Incremento de línea Contenido ================================================== 126,3 MiB 126,3 MiB def vel (símbolo, lookback, lookforward, fecha_inicial, fecha_final, quantile_size): 153,3 MiB 26,9 MiB ticks = pd.DataFrame (mt5.copy_ticks_range (símbolo, datetime (fecha_inicial.año, fecha_inicial.mes, fecha_inicial.día), .


Línea # Uso de la memoria Incremento del contenido de la línea

tal vez usted trata de usarhttps://docs.python.org/3/library/gc.html

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

 

Hola a todos.
Comenzó a obtener este error al tratar de colocar una orden a través deMetaTrader5.Buy() / Sell():

order_open = mt5.Buy(symbol, volume)

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

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

AttributeError: El objeto 'NoneType' no tiene el atributo 'retcode'


¿Puede sugerir cómo corregirlo?

Archivos adjuntos:
 
AxxelTrader:

Hola a todos.
Dicho error comenzó a aparecer al tratar de colocar una orden a través de MetaTrader5.Buy () / Sell ():

order_open = mt5.Buy(symbol, volume)

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

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

AttributeError: El objeto 'NoneType' no tiene el atributo 'retcode'


¿Puede decirme cómo solucionarlo?

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

¿Qué versión del terminal utilizas?

¿Has actualizado a la versión beta?

 
MetaQuotes:

¿Qué versión del terminal utilizas?

¿Has actualizado a la versión beta?

He actualizado a la última - versión del paquete MetaTrader5: 5.0.31

Este error se produce tanto al utilizar mt5.Buy(), mt5.Sell() y mt5.order_send(requests).

También escribe que no existe el atributo "retcode".

 
AxxelTrader:

He actualizado a la última - versión del paquete MetaTrader5: 5.0.31

Este error se produce tanto al utilizar las funciones mt5 .Buy(), mt5.Sell() y mt5.order_send(requests).

También escribe que no existe el atributo "retcode".

La pregunta era sobre la versión del terminal.

 
Renat Fatkhullin:

La pregunta era sobre la versión del terminal.

Versión de MT5: 5.00 build 2361 08 mar 2020

 
AxxelTrader:

Versión de MT5: 5.00 build 2361 08 mar 2020

Actualice a la versión beta, por favor.

Nuevas funciones disponibles sólo en las versiones beta.

 
Renat Fatkhullin:

Actualice a la versión beta, por favor.

Nuevas funciones disponibles sólo en las versiones beta.

Actualizado a la versión 2432.
Pero el error sigue ahí...
Lo probé en diferentes corredores incluso...

Archivos adjuntos: