Discussão do artigo "Interfaces Gráficas X: Atualizações para a tabela Renderizada e otimização do código (build 10)"

 

Novo artigo Interfaces Gráficas X: Atualizações para a tabela Renderizada e otimização do código (build 10) foi publicado:

Nós continuamos a complementar a tabela renderizada (CCanvasTable) com novas funcionalidades. A tabela terá agora: o realce das linhas quando o mouse estiver em cima; possibilidade de adicionar um array de ícones para cada célula e um método para trocá-los; possibilidade de definir ou modificar o texto da célula durante a execução do programa, e muito mais.

Autor: Anatoli Kazharski

 
Adições interessantes à mesa de desenho. Para ser sincero, eu estava esperando coisas um pouco diferentes deste artigo. Não, não estou nem um pouco desapontado (pelo contrário), apenas estava errado em minhas suposições, como sempre.

Pensei que, se você tivesse mudado para a implementação de uma interface desenhada, você delinearia seu conceito, formularia sua ideologia e descreveria a nova tecnologia. Pensei que você começaria refazendo a funcionalidade criada anteriormente....

No entanto, isso não está acontecendo no momento. Você ainda não formulou o conceito da GUI desenhada e não iniciou o redesenho global. Talvez essa reformulação global seja gradual, de artigo para artigo, e não revolucionária, como eu imaginava. É por isso que digo que estava errado em minhas expectativas.

Surpreendentemente, você está evitando qualquer reformulação global na biblioteca, o que é muito estranho para mim.

Eu definiria esse estilo de desenvolvimento da seguinte forma: "O desenvolvimento é uma expansão gradual em um plano em que cada problema local é resolvido por seu próprio método local. A universalização, a generalização e a compressão de soluções não se aplicam. Mudanças revolucionárias em grande escala são desfavoráveis. Vale a pena aderir aos padrões e estilos geralmente aceitos e não entrar em conflito com eles. ".

Meu estilo de desenvolvimento: "O desenvolvimento é uma universalização gradual, que leva ao fato de que a solução de novas tarefas locais é realizada não no nível dos métodos, mas no nível das linhas individuais dentro dos métodos. E mesmo assim, nem sempre. Há muito menos entidades novas surgindo, e os mecanismos antigos estão se tornando cada vez mais refinados. Há uma aceleração gradual de novas tarefas locais. As reformulações globais são difíceis e inevitáveis, mas necessárias."

Nos próximos artigos, aguardarei seu conceito de tecnologia de interface de desenho para compará-lo com o meu.

P.S. A propósito, se você estiver interessado, posso fazer um esboço.

Boa sorte.
 
Eu acrescentaria ao meu conceito de desenvolvimento: - "Em nome da eficiência absoluta, o sacrifício de abordagens, padrões e estilos convencionais é justificado. Eles podem ser ignorados, quebrados e alterados se estiverem impedindo o livre desenvolvimento criativo".
 
Реter Konow:
...

Talvez essa redistribuição global seja gradual, de artigo para artigo, em vez de revolucionária, como eu imaginava.

...


Sim, exatamente.
 
@Anatoli Kazharski Gostaria de esclarecer: o que é otimização de código? Pergunto isso porque a compilação com bibliotecas conectadas às vezes leva até 20 segundos. Ou deveria ser assim?
 
Alexander Fedosov:
@Anatoli Kazharski Gostaria de esclarecer: o que é otimização de código? Pergunto isso porque a compilação com bibliotecas conectadas às vezes leva até 20 segundos. Ou deveria ser assim?


No seu caso, ao desenvolver seu aplicativo MQL, defina o parâmetro Optimize no arquivo"MetaTrader 5/Config/metaeditor.ini" como zero, conforme mostrado abaixo:

...
[Experts]
Author=Copyright 2015, MetaQuotes Software Corp.
Address=http://www.mql5.com
Optimize=0
...

//---

Assim, tudo será compilado rapidamente:

0 error(s), 0 warning(s), compile time: 351 msec                1       1

//---

Não foi isso que o artigo quis dizer. Em alguns casos, isso significa aumentar o desempenho e, em alguns casos, significa universalização parcial (empacotar fragmentos de código repetitivos em métodos separados e colocá-los em uma classe separada).

 
Por algum motivo, nenhum dos Expert Advisors do Artigo 10 permanece no gráfico e, após alguns segundos, tendo mostrado apenas uma forma, ele é removido do gráfico por si só. No registro está escrito "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) CWndEvents::CheckExpertSubwindowNumber > Excluir a subjanela Expert faz com que o Expert seja excluído!" e mais adiante "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) ExpertRemove() function called" . Qual é o motivo?


 
Alexander:
Por algum motivo, nenhum dos Expert Advisors do Artigo 10 permanece no gráfico e, após alguns segundos, tendo mostrado apenas uma forma, ele é removido do gráfico por si só. No registro está escrito "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) CWndEvents::CheckExpertSubwindowNumber > Excluir a subjanela Expert faz com que o Expert seja excluído!" e mais adiante "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) ExpertRemove() function called" . Qual é o motivo?

Verifiquei novamente todas as situações possíveis (que conheço) em que isso poderia acontecer, mas não consegui reproduzi-las.

Os dois Expert Advisors de teste do artigo mostram esse comportamento ou somente o TestLibrary10 ? O que mostram os experts de teste de outros artigos?

 
Anatoli Kazharski:

Verifiquei novamente todas as situações possíveis (que eu saiba) em que isso poderia ocorrer, mas não consegui reproduzi-las.

Os dois experts de teste do artigo mostram esse comportamento ou apenas o TestLibrary10 ? E os Expert Advisors de teste de outros artigos, o que eles mostram?


Todos os EAs da pasta do Artigo 10 apresentam esse comportamento, ou seja, da TestLibrary7 à TestLibrary10.
 
Alexander:

Esse comportamento é mostrado por todos os EAs da pasta Artigo 10, ou seja, de TestLibrary7 a TestLibrary10.
Reproduzido. O problema ocorre quando há indicadores em subjanelas no gráfico. Esse comportamento não ocorria antes. Vou dar uma olhada nisso. Obrigado por sua mensagem.
 
Anatoli Kazharski:
Reproduzido. O problema ocorre quando o gráfico tem indicadores em subjanelas. Não havia esse comportamento antes. Vou dar uma olhada nisso. Obrigado pela mensagem.

Quando comentei no arquivo MainWindow.mqh do Expert Advisor 2 da TestLibrary07 as linhas 22 e 23 //m_window.AutoXResizeMode(true); e //m_window.AutoYResizeMode(true); então esse Expert Advisor começou a funcionar normalmente por algum motivo.