Erros, bugs, perguntas - página 2904

 
suncrypto:

Olá!

Mensagem para os criadores.

Continuo a testar Python - MT5. Há mais uma coisa interessante, talvez seja um insecto.
A essência.

De vez em quando, começo a seleccionar instrumentos financeiros entre todos os que estão disponíveis no terminal (cerca de 4000k).
Ligo-me ao terminal a partir de uma aplicação externa, ou seja, os scripts não são iniciados dentro do terminal.

Obtenho barras diárias e minúsculas para cada símbolo e depois utilizo "pandas" para efectuar cálculos e a selecção inicial dos instrumentos.
Tenho notado que o terminal começa gradualmente a carregar o processador até 70-80% após uma dessas operações.
Depois da carga de trabalho do processador de guião não está a diminuir (tentei esperar 15 min.), mas o terminal é muito lento. ajuda fechando o terminal.
Se eu executar o script duas vezes sem fechar o terminal, o script funciona sem erros mas a carga da CPU permanece a 70-80%.

Simplifiquei o guião ao mínimo para poder repetir a experiência e deixar de solicitar apenas citações. O problema ainda persiste.

Se necessário, pronto para gravar vídeo ou fornecer informações de outra forma.

O código é pyhton:

Com todo o respeito, Alexandre.

Não há erro no comportamento do terminal. É preciso compreender que para trabalhar com 1000 ou mais caracteres - é preciso um ferro potente e muita memória. Também é recomendado limitar severamente o número de barras no gráfico (nas definições dos terminais).

Pelo menos i7 ou i9 da nona ou melhor décima geração. Memória de pelo menos 32GB.


"... deixou apenas o pedido de orçamento ..." - Se pensa realmente que pedir cotações é uma operação muito simples - deixe de negociar e nunca se aproxime do seu computador.

 
Vladimir Karputov:

Não há erro no comportamento do terminal. É preciso compreender que, para trabalhar com 1000 ou mais símbolos - é preciso hardware poderoso e muita memória. Recomenda-se também limitar severamente o número de barras no gráfico (em configurações de terminal).

Pelo menos i7 ou i9 da nona ou melhor décima geração. Memória de pelo menos 32GB.


"... deixou apenas o pedido de orçamento ..." - Se pensa realmente que pedir cotações é uma operação muito simples - deixe de negociar e nunca se aproxime do computador.

Talvez não haja erro, não estou a dizer que há, apenas apontei este comportamento como um possível bug, este fio parece estar reservado para isso, ou estarei eu errado?

Com base no que diz, o meu hardware é mais do que adequado. O consumo de memória, a propósito, é relativamente baixo para esta operação, cerca de 3,5 GB. Tudo está bem com a memória, e em geral tudo funciona de forma estável.

Agora, eu reduzi intencionalmente o número de barras nos ajustes de 1mln para 1k. Não fez qualquer diferença. Penso que terá mais efeito se eu abrir algumas centenas de separadores no terminal.

Não é uma questão de quanto tempo de CPU é consumido no processo de enumeração, a questão é que depois de todas as consultas estarem concluídas, a carga não desce.
Se assumirmos que para cada carácter solicitado é deixado um fio separado na memória (não destruído) para utilização posterior, então isto explica tudo e não há dúvidas.

E eu afirmei que pedir orçamentos é uma simples operação? Não foi de todo sobre isso que escrevi. Sobre mim simplificando o guião para o primitivo para que outros factores não tenham impacto e deixando "apenas pedido de orçamento".

Se pensa realmente que o comércio exige a compreensão de que pedir cotações é uma operação complicada, não é de todo o caso.

Quanto aos conselhos para deixar de negociar e ficar longe do computador, demasiado tarde. Está 25 anos atrasado para o primeiro ponto e 10 anos atrasado para o segundo.

Se os criadores o considerarem necessário, terão em conta a informação. Se não o fizerem, não o fazem.

Cumprimentos, Alexandre.

 
suncrypto:

Talvez não haja erro, não estou a afirmar, apontei este comportamento como um possível bug, este fio parece ter sido concebido para isso, ou estarei eu errado?

Pelo que diz, tenho hardware mais do que suficiente. O consumo de memória, a propósito, é relativamente baixo para esta operação, cerca de 3,5 GB. Tudo está bem com a memória, e em geral tudo funciona de forma estável.

Agora, eu reduzi intencionalmente o número de barras nos ajustes de 1mln para 1k. Não fez qualquer diferença. Penso que terá mais efeito se eu abrir algumas centenas de separadores no terminal.

Não é uma questão de quanto tempo de CPU é consumido no processo de enumeração, a questão é que depois de todas as consultas estarem concluídas, a carga não desce.
Se assumirmos que para cada símbolo solicitado é deixado um fio separado na memória (não destruído) para posterior utilização, então isto explica tudo e não há dúvidas.

E eu afirmei que pedir orçamentos é uma simples operação? Não foi de todo sobre isso que escrevi. Sobre mim simplificando o guião para o primitivo para que outros factores não tenham impacto e deixando "apenas pedido de orçamento".

Se pensa realmente que o comércio exige a compreensão de que pedir cotações é uma operação complicada, não é de todo o caso.

Quanto aos conselhos para deixar de negociar e ficar longe do computador, demasiado tarde. Está 25 anos atrasado para o primeiro ponto e 10 anos atrasado para o segundo.

Se os criadores o considerarem necessário, terão em conta a informação. Se não o fizerem, não o fazem.

Cumprimentos, Alexandre.

Reiniciou o seu terminal depois de ter diminuído o número de barras?

 
Vladimir Karputov:

Reiniciou o terminal depois de reduzir o número de barras?

Claro que sim.
 
Vladimir Karputov:

Reiniciou o terminal depois de reduzir o número de barras?

Suncrypto:
Claro que sim.

Fiz uma experiência.

Abri cerca de 100 janelas no terminal (não abre mais, há um limite).
A carga do processador aumentou ligeiramente para 8-10% e o tamanho da memória utilizada aumentou, o que é lógico.
Depois fechei o terminal, abri-o novamente, a carga aumentou até 70-80% e após cerca de um minuto normalizou e regressou a 8-10%.

(Definir para 1 milhão de barras nos cenários).


Portanto, a situação descrita acima (com ligação externa), é como dizem, ou um bug ou uma característica.
Só os programadores sabem a resposta certa.
Se for um bug, então feche o terminal e reabra-o após tal operação. A operação não é frequente.

 
suncrypto:

Se esta é uma característica, então fechar o terminal após tal operação e reabri-lo é uma solução e tanto. A operação não é frequente.

Sim, o terminal deve manter uma cache de séries de tempos recentemente solicitadas.

Mas não tem de o fazer para sempre, penso que houve um timeout de 3 ou 5 minutos.

 
suncrypto:


É favor notar que a partir da construção 2650:


1.Terminal: Adicionada a definição "Carregar com antecedência os dados do gráfico para posições abertas e encomendas".


Para poupar tráfego, a plataforma de negociação apenas descarrega o histórico de preços dos instrumentos no momento do seu pedido real, por exemplo, ao abrir um gráfico ou ao executar um teste. No entanto, para instrumentos utilizados activamente, isto pode nem sempre ser conveniente. Se activar a nova opção, os gráficos de instrumentos para os quais tem posições em aberto ou ordens pendentes serão actualizados em segundo plano cada vez que lançar a plataforma. Assim,ao abrir os gráficos, não terá de esperar que os dados sejam carregados de novo, eles estarão imediatamente disponíveis para análise.

Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
  • 2020.10.08
  • www.mql5.com
В пятницу 9 октября 2020 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Andrey Khatimlianskii:

Sim, o terminal deve manter uma cache de séries de tempos recentemente solicitadas.

Mas não deve fazer isto para sempre, penso que houve um timeout de 3 ou 5 minutos.

Sim, tudo está bem no próprio terminal. Fechando janelas "desnecessárias" reduz tanto a carga da CPU como o consumo de memória.
A única questão até agora é sobre a ligação externa a partir de python.
 
Vladimir Karputov:

É favor notar que a partir da construção 2650:


1.Terminal: Adicionada a definição "Carregar com antecedência os dados do gráfico para posições abertas e encomendas".


Para poupar tráfego, a plataforma de negociação apenas descarrega o histórico de preços dos instrumentos no momento do seu pedido real, por exemplo, ao abrir um gráfico ou ao executar um teste. No entanto, para instrumentos utilizados activamente, isto pode nem sempre ser conveniente. Se activar a nova opção, os gráficos de instrumentos para os quais tem posições em aberto ou ordens pendentes serão actualizados em segundo plano cada vez que lançar a plataforma. Assim, ao abrir um gráfico, não terá de esperar que os dados sejam recarregados - eles estarão imediatamente disponíveis para análise.

Sobre este ponto, existe uma renúncia de responsabilidade:"Gráficos de instrumentos para os quais tem posições em aberto ou ordens pendentes".
Além disso, todos os gráficos já foram carregados para a base de dados local enquanto o guião está a correr, o tráfego é mínimo.

Embora não seja totalmente correcto, se fizermos uma analogia com o SQL Server ao qual fazemos pelo menos 1 milhão de pedidos de dados, então, sim, haverá um pico de carga no processador neste momento, mas a carga no processador será definitivamente reduzida após a conclusão da operação.

Claro que Metatrader não é um servidor sql, é uma plataforma diferente, mas por alguma razão parece-me que após a execução de pedidos de cotação ao MetaTrader e o fecho da ligação com ele, tudo deve voltar ao normal. Espero que os criadores de metatraders expliquem.

 
mox_dimass:

O que é o erro com o capotamento no testador? No ficheiro anexado uma imagem de ecrã com um exemplo: uma posição de Sellaberta, fechada pela rolagem através de Buy, depois reaberta através de Sell, mas com volume zero.

Como resultado, a posição não é reaberta; desaparece. É realçado na imagem do ecrã. Já escrevi sobre o assunto, mas sem fotografias. Que tipo de insecto é este? Torna impossível testá-lo.

Pergunto-me se os criadores irão responder a esta falha. Afinal, o capotamento é gerado pelo testador e não pelo meu software.

Razão: