Discussão do artigo "Guia prático do MQL5: Controles de sub-janela indicadora - botões" - página 5

 
tol64:

Você concorda agora? )

Para ser honesto, não entendo por que o indicador deve parar de rastrear o movimento do mouse depois de desativar o Expert Advisor? Onde está a conexão entre o indicador e o Expert Advisor?
 
C-4:
Para ser honesto, não entendo por que o indicador deve parar de rastrear o movimento do mouse depois de desativar o Expert Advisor? Onde está a conexão entre o indicador e o Expert Advisor?

Esse é o ponto, pode não haver conexão entre eles, de modo que cada programa, ao descarregar, deve desativar o que outros programas podem não precisar. Nesse caso, se o indicador não precisa rastrear o evento de movimento do mouse, por que obstruir o fluxo da fila de eventos?

É claro que você não pode fazer isso, pois não é necessário. Mas se estivermos falando de otimização, acho que é necessário.

 
tol64:

A questão é que pode não haver conexão entre eles, portanto, cada programa deve desativar o que os outros programas não precisam. Nesse caso, se o indicador não precisa rastrear o evento de movimento do mouse, por que obstruir o fluxo da fila de eventos?

É claro que você não pode fazer isso, pois não é necessário. Mas se estivermos falando de otimização, acho que é necessário.

Vasiliy está falando que o programa não deve ativar/desativar o rastreamento sem pensar, mas sim:

  • Ativá-lo somente se ele estiver desativado (isso não é crítico)
  • Após a conclusão do trabalho, retornar ao estado em que ele (o rastreamento) estava.

Ou seja, a desativação só deve ocorrer se o rastreamento estiver desativado quando o programa for iniciado.

Assim, qualquer combinação de programas de início/parada com/sem rastreamento de eventos do mouse funcionará corretamente.

 
tol64:

A questão é que pode não haver conexão entre eles, portanto, cada programa deve desativar o que os outros programas não precisam. Nesse caso, se o indicador não precisa rastrear o evento de movimento do mouse, por que obstruir o fluxo da fila de eventos?

É claro que você não pode fazer isso, pois não é necessário. Mas se estivermos falando de otimização, acho que é necessário.

Aha, ou seja, no seu exemplo, o Expert Advisor decidiu que o indicador não precisa mais receber o evento EVENT_MOVE_MOUSE e o desativou antes de sair. Então, com base em que o Expert Advisor decide o que os outros indicadores precisam e o que não precisam? Ele não está se sobrecarregando demais?
 
komposter:

Vasily está fazendo uma boa observação: o programa não deve ativar/desativar o rastreamento sem pensar, mas sim:

  • Ativá-lo somente se ele estiver desativado (isso não é crítico)
  • Após a conclusão do trabalho, retornar ao estado em que ele (o rastreamento) estava.
Ou seja, a desativação deve ser feita somente se o rastreamento estava desativado quando o programa foi iniciado

Então, eu fiz da seguinte forma.

O programa, no qual o rastreamento é ativado na inicialização, desativa-o no descarregamento. E o programa que permanece no gráfico e precisa do rastreamento verifica se ele está ativado e, se estiver desativado, ele o ativa.

É aconselhável dar sua variante nos exemplos de Expert Advisor e código de indicador da minha postagem na página anterior para excluir a ambiguidade das declarações.

 
C-4:
Ou seja, no seu exemplo, o Expert Advisor decidiu que o indicador não precisa mais receber o evento EVENT_MOVE_MOUSE e o desativou antes de sair. Com base em que o Expert Advisor decide o que os outros indicadores precisam e o que não precisam? Ele não está se responsabilizando demais?

O especialista decide por si mesmo. Mas, na verdade, gosto mais de sua variante. Ou seja, ela é mais correta. Eu não escrevi sobre como fazer isso melhor, mas sobre a necessidade disso. Você não precisa inverter. Ponto final.

 
tol64:
O especialista decide por si mesmo. Mas, na verdade, gosto mais de sua opção. Eu não estava falando sobre a melhor maneira de fazer isso, estava falando sobre a necessidade disso. Você não precisa inverter. Ponto final.
Portanto, se ninguém desativará esse evento, não há necessidade de verificar se ele está ativado a cada segundo. Em um Expert Advisor, você desativa especificamente o evento e, em outro, monitora sua propriedade a cada segundo, embora seja mais fácil e seguro não escrever nada.
 
C-4:
Ou seja, no seu exemplo, o Expert Advisor decidiu que o indicador não precisa mais receber o evento EVENT_MOVE_MOUSE e o desativou antes de sair. Com base em que o Expert Advisor decide o que os outros indicadores precisam e o que não precisam? Ele não se sobrecarrega demais?

Provavelmente, supõe-se que todos os outros programas estejam organizados de acordo com o mesmo princípio e que eles mesmos o ativarão, se necessário.

Mas será que é tão importante desligar? Essa chave liga/desliga só se aplica a um gráfico. Acredito que não será um grande problema se você apenas o ligar e não o desligar.

Poucas pessoas se incomodariam com isso. Portanto, para evitar problemas, ligue-o apenas, mas não o desligue. Mas, novamente, alguém o desligará. Portanto, você pode monitorá-lo com um timer e ligá-lo se necessário, mas não desligá-lo.

 
C-4:
Então, se ninguém vai desligar esse evento...
Não há como saber.
 
C-4:
Portanto, se ninguém desativar esse evento, não há necessidade de verificar a cada segundo se ele está ativado. Em um Expert Advisor, você desativa especificamente o evento e, em outro, monitora sua propriedade a cada segundo, embora seja mais fácil e seguro não escrever nada.

Não necessariamente a cada segundo, há uma alternativa em outro evento (já discutido). Dê um exemplo melhor, por favor, de como eu fiz isso aqui. ) A partir da condição de que o Expert Advisor precisa desse evento, mas o indicador não. Dessa forma, ficará mais claro.

P.S. Correção. Eu cometi um erro. )) Sua variante não está mais correta. Ela não se encaixa de forma alguma. Portanto, é melhor dar um exemplo com base na condição acima.