Como posso fazer a saída em um gráfico em fonte monoespaçada? - página 6

 
Nikolai Semko:

Com o MT4, por outro lado, o quadro é completamente diferente.
Se no MT5 o trabalho de Comentário e Tela é praticamente o mesmo, no MT4 Comentário é 1000 vezes mais rápido. Concluo que no MT5 o Comentário é implementado através do BitMap interno, enquanto no MT4 ele funciona de forma diferente. A diferença é impressionante. Acho que vou transferir esta pergunta para o fórum Bug.

Explicação detalhada aqui: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

O Comentário no MT4 é essencialmente falso e não faz com que o gráfico seja redesenhado.

 
Renat Fatkhullin:

Explicação detalhada aqui: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

O comentário no MT4 é essencialmente falso e não faz com que o gráfico seja redesenhado.


E agora para tirar conclusões práticas

1. Seria bom substituir a série de funções que afetam o desempenho nos testes por suas contrapartidas #definas

2. 90% das senhoras/pessoas aqui presentes estão em definições como o enroscar em laranjas.

4. Há um monstro definido no fórum fxsaber

5. Talvez pedir-lhe para fazer e manter uma biblioteca de definições similares, para que os meros mortais não tenham que pensar em que modo o programa funciona?

O que a comunidade e o fxsaber pensam sobre tal sugestão?

 

O que as definições têm a ver com isso se as pessoas não entendem a ferramenta e estão tentando testar a velocidade do que não pode ser testado.

Chamar um comentário para olhar para ele é normal.

Chamá-lo 1000-10000 vezes por segundo é anormal tanto logicamente (você não pode olhar para ele) quanto tecnologicamente - causa altos custos para não exibir/redesenhar o gráfico inteiro (não apenas sua linha).

Você precisa entender o que está fazendo. É sobre isso que escrevi em detalhes em minha resposta.

 
Renat Fatkhullin:

O que as definições têm a ver com isso se as pessoas não entendem a ferramenta e estão tentando testar a velocidade do que não pode ser testado.

Chamar um comentário para olhar para ele é normal.

Chamá-lo 1000-10000 vezes por segundo é anormal tanto logicamente (você não pode olhar para ele) quanto tecnologicamente - causa altos custos para não exibir/redesenhar o gráfico inteiro (não apenas sua linha).

Você precisa entender o que está fazendo. É sobre isso que escrevi em detalhes em minha resposta.

E ao invés disso você sugere "me dê um pedaço de código para continuar pensando", ignorando as explicações de porque é errado fazer isso dessa maneira.

Renat, tenho aqui um EA em funcionamento. Eu sou um otário e não sei nada sobre estes desenhos. Funciona e é ótimo. Eu o submeto para testes e vejo a degradação do desempenho devido aos problemas que descrevi.

Não faria sentido fazer uma definição que determinasse em que modo estamos trabalhando? E no modo de teste/optimização não produz nada?

 
Alexey Volchanskiy:

Renat, tenho aqui um EA em funcionamento. Sou um otário e não sei absolutamente nada sobre estes desenhos. Funciona e é ótimo. Estou testando-o e vejo uma diminuição no desempenho devido aos problemas que descrevi.

Não faria sentido fazer uma definição que determinasse em que modo estamos trabalhando? E no modo de teste/optimização não produz nada?


Não espere que as pessoas entendam tudo dessa maneira. Deus proíba que 20% das pessoas neste fórum entendam o OOP. Pode ser comparado ao conhecimento de um carro. Todos os impulsionam, mas poucos entendem como o mesmo motor de combustão interna funciona e uma fração de % pode, de alguma forma, consertar algo.

Mas todos eles são seus clientes).

 
Alexey Volchanskiy:

Renat, tenho aqui um EA em funcionamento. Sou um otário e não sei absolutamente nada sobre estes desenhos. Funciona e é ótimo. Estou testando-o e vejo uma diminuição no desempenho devido aos problemas que descrevi.

Não faria sentido fazer uma definição que determinasse em que modo estamos trabalhando? E no modo de teste/optimização não produz nada?

E qual é o problema para pensar e melhorar tudo dramaticamente?

Já existe alguma biblioteca MQL4-MQL5 no modo "ele funciona e é ótimo", é por isso que temos que arrancar nossos cabelos. As pessoas estão usando-o seriamente para comparar a velocidade das duas plataformas.

E agora você está se oferecendo não para pensar, mas para fazer outro produto artesanal que será rebocado dizendo "o MT5 é mais lento".

 
Renat Fatkhullin:

Já existe uma biblioteca MQL4-MQL5 em modo "funciona e é ótimo", o que faz você arrancar seus cabelos. As pessoas estão usando-o seriamente para comparar a velocidade das duas plataformas.

Esta não é uma afirmação bem fundamentada.

 
Alexey Volchanskiy:

Não é lógico fazer uma definição que determine em que modo estamos trabalhando? E no modo de teste/optimização simplesmente não produz nada?

Há uma ferramenta universal que permite medir o desempenho do código no testador com uma linha. Podemos ver muitas coisas ali. Em particular, que uma única execução é mais lenta do que uma execução de otimização.

Sobre o assunto do comentário, os desenvolvedores deram sua resposta. Até agora, eu mesmo acelero a otimização em 1,5-2 vezes por uma única linha.

E o SD me falou de uma importante nuance para o desempenho.


A preocupação com os microssegundos de execução das funções é razoável apenas nos modos de otimização. Em tempo real, isso não faz diferença. E o Comentário não desempenha nenhum papel no desempenho do Expert Advisor em tempo real, mesmo que seja uma ordem de magnitude mais lenta.


Mas é um fato que quase ninguém escreve EAs de tal forma que eles funcionem o mais rápido possível no testador.

 
Renat Fatkhullin:

O que as definições têm a ver com isso se as pessoas não entendem a ferramenta e estão tentando testar algo que não pode ser testado quanto à velocidade.

Renat Fatkhullin:

Já existe uma biblioteca MQL4-MQL5 no modo "it works and it's great" que faz você arrancar seus cabelos. As pessoas estão usando-o seriamente para comparar a velocidade das duas plataformas.


E eu pessoalmente não sinto pena do trabalho feito. Estasreferências aparentemente inúteisacabaram não sendo inúteis em nada. Como muitas coisas úteis vieram à luz graças à sua explicação detalhada, e como resultado, alguns quebra-cabeças começaram a se encaixar. Não consigo encontrá-lo em nenhum lugar, então tenho que beliscá-lo :))).

Por exemplo, embora eu tenha vergonha de confessar, não sabia que a função Update() de Kanvas refaz toda a janela, independentemente de seu tamanho. Mas para entender isso, eu só tinha que olhar através das entranhas do CCanvas. E saber pelo menos exatamente este fato mudará a lógica do trabalho e me poupará de gestos desnecessários em algumas implementações relacionadas a gráficos. E Comentar não tinha nada a ver com isso, era apenas um "só para chegar ao fundo da questão". Mais uma vez, obrigado!

O que não está claro é que enquanto a função Update(false) no MT5 não desenha nada na tela, a função MT4 não desenha a janela inteira, mas apenas a tela em si. Isso significa que a função ResourceCreate no MT5 não desenha um conjunto de pixels sem ChartRedraw(), mas sim no MT4. Acho que seria útil também no MT5.

 
Nikolai Semko:

ResourceCreate em MT5 não exibe uma matriz de pixels sem ChartRedraw(), mas exibe em MT4.

E o faz corretamente. É tão lógico quanto não fazer ChartRedraw depois de alterar as propriedades do objeto. Usando a terminologia de

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Erros, Erros, Perguntas

Renat Fatkhullin, 2017.12.05 02:51

  • O MT5 tem um sistema mais correto de troca de objetos no gráfico e você precisa entender claramente as conseqüências da mistura de comandos de leitura/escrita
    recomenda-se não misturar comandos de leitura/escrita, mas fazer uma leitura e uma escrita em massa separadas.

O ChartRedraw deve ser chamado após a escrita em massa, não após cada escrita.