MetaTrader 5 Python User Group - como usar o Python no Metatrader - página 64

 
ckeiderling :

Olá a todos,


Espero que não se importe com um homem inglês aqui. Procurando alguma orientação depois de passar muito tempo a pesquisar a web sem sucesso.

Estou a utilizar a biblioteca MetaTrader5 Python após alguma inspiração dos artigos da Maxiums. Tenho notado um problema com o manuseamento da memória.

Quando faço um Dataframe utilizando mt5 lib, o dataframe resultante funciona como esperado. Fi-lo dentro de uma função que recolhe as carraças e depois efectua várias análises antes de emitir o df manipulado.

No entanto, se eu voltar a executar a função que cria o DataFrame, reparei que a memória está apenas a acumular-se a partir da instância anterior.

Tenho o mesmo problema usando mt5.copy_ticks_range () e mt5.copy_rates_range (). Tenho de reiniciar o núcleo a fim de limpar a memória.

Tenho o mesmo problema mesmo depois de remover todo o código, excepto a linha que cria o quadro de dados. Por exemplo:

def vel (símbolo, lookback, lookforward, start_date, end_date, quantile_size):

ticks = pd.DataFrame (mt5.copy_ticks_range (símbolo, data_data.ano, data_de_início.mês, data_de_início.dia), data hora (fim_data.ano, fim_data.mês, fim_data.dia), mt5.COPY_TICKS_ALL), colunas = [ 'hora', 'lance', 'perguntar', 'último', 'volume', 'hora_msc', 'bandeiras', 'volume_real'])

Se executar isto várias vezes, o uso de memória sobe 27MiB de cada vez:

Linha # Mem usage Increment Line Contents =========================================== ======= 126.3 MiB 126.3 MiB def vel (símbolo, lookback, lookforward, start_date, end_date, quantile_size): 153.3 MiB 26.9 MiB ticks = pd.DataFrame (mt5.copy_ticks_range (símbolo, data_de_início.ano, data_de_início.mês, data_de_início.dia), .


Linha # Utilização de Mem Conteúdo da Linha de Incremento

Se quiser ajuda na depuração, então terá de dar uma MVCE completa. Este trecho não é suficiente.

 
ckeiderling:

Olá a todos,


Espero que não se importe com um homem inglês aqui. Procura alguma orientação depois de passar muito tempo a pesquisar a web sem sucesso.

Estou a utilizar a biblioteca MetaTrader5 Python após alguma inspiração dos artigos do Maxiums. Notei um problema com o manuseamento da memória.

Quando faço um Dataframe utilizando mt5 lib, o dataframe resultante funciona como esperado. Fi-lo dentro de uma função que recolhe as carraças e depois efectua várias análises antes de emitir o df manipulado.

No entanto, se eu voltar a executar a função que cria o DataFrame, reparei que a memória está apenas a acumular-se a partir da instância anterior.

Tenho o mesmo problema usando mt5.copy_ticks_range () e mt5.copy_rates_range (). Tenho de reiniciar o núcleo a fim de limpar a memória.

Tenho o mesmo problema mesmo depois de remover todo o código, excepto a linha que cria o quadro de dados. Por exemplo:

def vel (símbolo, lookback, lookforward, start_date, end_date, quantile_size):

ticks = pd.DataFrame (mt5.copy_ticks_range (símbolo, data_data.ano, data_de_início.mês, data_de_início.dia), data hora (fim_data.ano, fim_data.mês, fim_data.dia), mt5.COPY_TICKS_ALL), colunas = [ 'hora', 'lance', 'perguntar', 'último', 'volume', 'hora_msc', 'bandeiras', 'volume_real'])

Se executar isto várias vezes, o uso de memória sobe 27MiB de cada vez:

Linha # Mem usage Increment Line Contents ================================================== 126.3 MiB 126.3 MiB def vel (símbolo, lookback, lookforward, start_date, end_date, quantile_size): 153.3 MiB 26.9 MiB ticks = pd.DataFrame (mt5.copy_ticks_range (símbolo, data_de_início.ano, data_de_início.mês, data_de_início.dia), .


Linha # Utilização de Mem Conteúdo da Linha de Incremento

talvez tente usarhttps://docs.python.org/3/library/gc.html

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

 

Olá a todos.
Começou a receber este erro ao tentar colocar uma encomenda viaMetaTrader5.Buy() / Sell():

order_open = mt5.Buy(symbol, volume)

Ficheiro "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", linha 313, em Buy

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

AttributeError: objecto 'NoneType' não tem atributo 'retcode'.


Pode sugerir como corrigi-lo?

Arquivos anexados:
 
AxxelTrader:

Olá a todos.
Tal erro começou a aparecer ao tentar fazer uma encomenda através do MetaTrader5.Buy () / Sell ():

order_open = mt5.Buy(symbol, volume)

Ficheiro "C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py", linha 313, em Buy

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

AttributeError: objecto 'NoneType' não tem atributo 'retcode'.


Pode dizer-me como repará-lo?

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

Qual a construção do terminal que utiliza?

Já actualizou a versão beta?

 
MetaQuotes:

Qual a construção do terminal que utiliza?

Já actualizou a versão beta?

Actualizei para a última versão - Pacote MetaTrader5 versão: 5.0.31

Este erro ocorre tanto ao utilizar mt5.Buy(), mt5.Sell() como mt5.order_send(requests).

Também escreve que não há atributo "retcode".

 
AxxelTrader:

Actualizei para a última versão - Pacote MetaTrader5 versão: 5.0.31

Este erro ocorre tanto ao utilizar as funções mt5.Buy(), mt5.Sell() como mt5.order_send(requests).

Também escreve que não há atributo "retcode".

A questão era sobre a versão terminal.

 
Renat Fatkhullin:

A questão era sobre a versão do terminal.

Versão MT5: 5.00 construir 2361 08 mar 2020

 
AxxelTrader:

Versão MT5: 5.00 construir 2361 08 mar 2020

Actualização para a versão beta, por favor.

Novas funções disponíveis apenas em versões beta.

 
Renat Fatkhullin:

Actualização para a versão beta, por favor.

Novas funções disponíveis apenas em versões beta.

Actualizado para a versão 2432.
Mas o erro continua lá...
Experimentei-o em diferentes corretores até...

Arquivos anexados: