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

 
Renat Fatkhullin:

Qual é o problema de pensar sobre isso e melhorá-lo drasticamente?

Já existe uma biblioteca MQL4-MQL5 no modo "it works and it's great" que está arrancando seu cabelo. 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 criar uma nova ferramenta de ponta que será rebocada dizendo "o MT5 é mais lento".


Eu não entendo nada. Sugiro, mais uma vez, se o fxsaber tem tempo e desejo:

1. Fazer uma biblioteca para MT5 (opcional para MT4), que desabilitaria funções desnecessárias (por enquanto, gráficos) no modo testador/optimizador

2. Para isso, envolva estas funções dispendiosas em definições e, dependendo do modo de operação, ative-as ou desative-as

Não há necessidade de ser tão emotivo com isso, ninguém está atacando o MT5.

 
fxsaber:

Há uma ferramenta universal que permite medir o desempenho do código no testador com uma linha. Conseguimos ver muitas coisas lá. 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.

Por favor, escreva um FAQ sobre como conseguir isso. Por favor, tenha todos os seus pensamentos em um só lugar. Vamos colocá-los em seu blog, em outros lugares, posso fazer um vídeo clipe no youtube e colocá-lo no canal MQ. Você sem dúvida tem uma vasta experiência em tais coisas sistêmicas, vamos compartilhar para o bem comum!
 
Alexey Volchanskiy:
Por favor, escreva um FAQ sobre como conseguir isso. Que todos os pensamentos estejam em um só lugar.

Há um grande fio só por isso. Talvez alguém gaste muito tempo e esforço compilando uma seção por seção com base nos muitos posts deste tópico.


E para o desempenho, uso sempre a mesma receita - TesterBenchmark + profiler. E, é claro, encontrar um equilíbrio razoável entre as características do testador e o comércio real. É assim que o MT4Orders é escrito. O programa tem como objetivo um trabalho rápido no testador e um trabalho ideal na conta real. Para este fim, precisamos entender que existem alguns (às vezes caros) cheques no mesmo testador que não são necessários para a verdadeira comercialização. Isto resulta em uma grande economia. E o caching da mesma história, etc. Isto é, é necessário escrever bibliotecas que às vezes têm em suas entranhas lógicas diferentes para o testador e para o real. Trade.mqh, infelizmente, não é uma biblioteca desse tipo.

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2017.02.24
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
fxsaber:

Há um grande fio só por isso. Talvez alguém gaste muito tempo e esforço compilando uma seção por seção com base nos muitos posts deste tópico.


E para o desempenho, uso sempre a mesma receita - TesterBenchmark + profiler. E, é claro, encontrar um equilíbrio razoável entre as características do testador e o comércio real. É assim que o MT4Orders é escrito. O programa tem como objetivo um trabalho rápido no testador e um trabalho ideal na conta real. Para este fim, precisamos entender que existem alguns (às vezes caros) cheques no mesmo testador que não são necessários para a verdadeira comercialização. Isto resulta em uma grande economia. E o caching da mesma história, etc. Ou seja, é necessário escrever bibliotecas que às vezes têm em suas entranhas lógicas diferentes para o testador e para o real. Trade.mqh, infelizmente, não é uma biblioteca desse tipo.

Era o que eu estava querendo dizer em meus cargos anteriores. Fazer um FAQ sobre o ramo acima é a tarefa no máximo. Vamos assumir a humilde tarefa de fazer um FAQ sobre aceleração da otimização. Basta escrever seus pensamentos, se houver algum código, acrescentar código. Tentarei resumir, escovar e, em seguida, chegaremos a um acordo e afixá-lo. Vou fazer o clipe, tenho muita experiência, sem problemas.
 
Alexey Volchanskiy:
Vamos fazer uma tarefa modesta - fazer um FAQ sobre aceleração da otimização.

O altruísmo às vezes é uma coisa boa. Mas o tempo não me pertence, ele pertence à Família.

Códigos e receitas humildes são compartilhados. Isto parece suficiente.

Não possuo nenhum segredo.

 
fxsaber:

E o faz corretamente. Faz tanto sentido quanto não fazer um ChartRedraw depois de alterar as propriedades de um objeto. Para utilizar a terminologia

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

Sim, mas se eu tiver telas pequenas, digamos 130x80 pixels, o que é menos de 1% do total da janela e eu preciso emitir informações atuais para dentro dela. Portanto, no MT4 eu posso fazê-lo sem redesenhar toda a tela com Update(false), mas no MT5 eu tenho que redesenhar toda a tela a cada vez. E é um par de ordens de magnitude mais intensiva em termos de recursos. E isto não é um teste, mas um tópico de trabalho.
 
Nikolai Semko:
Sim, mas se eu tiver uma tela pequena, digamos 130x80 pixels, que é menos de 1% da janela total, e eu preciso exibir informações atuais nela. Portanto, no MT4 eu posso fazê-lo sem redesenhar toda a tela com Update(false), mas no MT5 eu tenho que redesenhar toda a tela a cada vez. E é um par de ordens de magnitude mais intensiva em termos de recursos. E isto não é um teste, mas um tópico de trabalho.

Tenho certeza de que a tela nunca é parcialmente redesenhada quando se faz kanvas ou qualquer outra ação.

 
fxsaber:

O altruísmo às vezes é uma coisa boa. Mas o tempo não pertence a mim, ele pertence à Família.

Códigos e receitas humildes são compartilhados. Isto parece suficiente.

Eu não tenho nenhum segredo.


Modéstia é ótimo! Eu também sou uma pessoa modesta. O altruísmo é para a falecida Madre Teresa na maioria dos casos. Embora, às vezes, as raízes desta doença ruim - o altruísmo - brotem em mim também )))

 
fxsaber:

Certamente, a tela nunca é parcialmente redesenhada quando há kanvas ou qualquer outra ação.


Sim, eu estava errado. Eu estava errado ao dizer queResourceCreate sem ChartRedraw em MT4 redesenhará a tela toda vez. Ele o faz apenas de vez em quando, enquanto o MT5 não o faz de forma alguma.

Sim, é claro que sou burro. No nível do hardware, o contexto da tela não pode mudar apenas uma parte da tela, mas a tela inteira.
Entendi isso quando introduzi um pequeno atraso Dormir(10):

Arquivos anexados: