Discussão do artigo "Guia prático do MQL5: Controles de sub-janela indicadora - botões" - página 4
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
E o fato de que "as funções de botão são colocadas na função OnInit" é muito engraçado!
No entanto, talvez você não entenda do que estamos falando? Se você pressionar um botão, alguma função de usuário deverá ser acionada para executar alguma microtarefa.
Muito bem, vamos rir um pouco. O artigo foi escrito por você, "ninguém puxou sua língua".
Portanto, a explicação na forma de citações para o inexplicável é, no mínimo, desrespeitosa com seus leitores. As perguntas devem ser respondidas com exemplos e links para fontes primárias.
Um código confuso e sobrecarregado com funções desnecessárias apenas engana os "iniciantes".
E o fato de que "as funções de botão são colocadas na função OnInit" é muito engraçado!
Ninguém o puxou pela língua. Você vai me dar provas? Ou melhor, uma refutação de minha declaração? Para sua informação, nem tudo está descrito no Manual ainda. Quero dizer, o trabalho no manual está em andamento, adições e correções estão sendo feitas. Você deve sempre verificar tudo por conta própria.
Acredite em mim, o código de seu artigo é muito mais "confuso" para iniciantes e não só, o que pode ser visto na discussão de seu artigo.
Entretanto, talvez você não entenda do que estamos falando? Se você clicar em um botão, alguma função de usuário deverá ser acionada para executar alguma microtarefa.
Sim, eu interpretei literalmente. Faça suas perguntas com mais precisão. Mas prevejo que minha resposta será ridicularizada por você, já que você parece ter essa função hoje.
Nesse caso, a "microtarefa" era alterar a cor do botão. Propositadamente, não adicionei nenhum recurso extra para não ter nada supérfluo. Apenas para evitar sobrecarregar o código.
Na verdade, o tópico do artigo não se limita apenas aos botões. A maior parte é sobre eventos de gráficos. Há poucos exemplos desse tipo, então decidi escrever um.
Caro autor do artigo, você o escreveu não para mim, mas para iniciantes. Na verdade, não estou interessado em suas soluções, mas estamos falando de pessoas que estão começando a conhecer o idioma. De que "outros programas" estamos falando? E como a função OnDeinit de um programa pode afetar as funções de outros programas?
Estamos discutindo um artigo e por que você está tão indignado?
Tente responder às perguntas não para mim, mas para os iniciantes, para que eles entendam por que e como.
Caro autor do artigo, você não o escreveu para mim, mas para iniciantes.
Exatamente isso.
Na verdade, não estou interessado em suas soluções, mas estamos falando de pessoas que estão começando a conhecer o idioma.
Mas você faz perguntas.
De que "outros programas" estamos falando?
Dos mesmos programas para os quais você forneceu links anteriormente. E você tenta refutar minha declaração por meio de dicas sem fornecer uma prova.
E como a função OnDeinit de um programa pode afetar as funções de outros programas?
Ela afeta. Eu escrevi sobre isso. O editor que publicou o artigo confirmou isso. Você também pode conferir e ver por si mesmo.
Estamos discutindo o artigo e do que você se ressente tanto?
Nada. Estou aguardando uma refutação à minha afirmação. )
Tente responder às perguntas não para mim, mas para os novatos, para que eles entendam por que e como.
Até o momento, não houve perguntas de novatos. E não pode haver perguntas. Tudo é muito claro e cada linha de código é comentada em detalhes.
Nós bloqueamos isso primeiro:
Ou seja, agora não rastreamos os eventos do mouse, certo?
Vamos executar seu código no gráfico:
agora executamos "outro programa", que seja seu código novamente:
Acho que algo deu errado... Ou é isso que devemos fazer?
agora excluímos um dos indicadores e, de acordo com o autor do código, perdemos o "rastreamento do mouse", mas isso não acontece:
Se você não se qualifica, então não sei quem se qualifica? Danald Knuth? Bill Gates?
Eu estava apenas tentando receber um elogio. Funcionou).
Entendo. Mas o que não está claro é que os principais produtos do mercado criados por você não lhe pertencem. Isso não é uma pena?
1. Ainda não é noite)
2. Meu artesanato também está constantemente no topo, embora não esteja em nenhuma comparação com o painel.
3. O sucesso do painel se deve em grande parte aos esforços do autor da ideia, portanto, é incorreto dizer que ele é meu produto.
4. Eu não trabalhei de graça)
...
Agora excluímos um dos indicadores e, de acordo com o autor do código, perdemos o "rastreamento do mouse", mas isso não acontece:
Agora, verifique se o evento OnDeinit() é acionado nos indicadores. Esse é o ponto interessante que mencionei anteriormente. :) Ou seja, no OnDeinit(), no exemplo do artigo, o evento de rastreamento de movimento está desativado. Desde algumas compilações, parece que OnDeinit() parou de funcionar nos indicadores, o que é um bug e devemos informar os desenvolvedores.
Além disso, para ter certeza de que minha declaração está correta, precisamos criar um Expert Advisor em branco (a função OnDeinit() funciona em Expert Advisors), no qual basta adicionar esta linha de código (destacada):
//---
E agora, se você remover o Expert Advisor quando o indicador do artigo estiver no gráfico, o rastreamento do evento de movimento também será desativado no indicador.
Sobre isso:
Alguma coisa deve ter dado errado? Ou é assim que ele foi projetado?
Isso é conhecido. Ele não foi projetado dessa forma, apenas não foi levado em consideração neste artigo. O artigo, como sempre, é um exemplo simples, não uma solução pronta para todos os casos. )
Em geral, esse código parece ser muito problemático. Não há motivo real para desativar o rastreamento do movimento do mouse ao desativar o Expert Advisor/indicador. Se quiser se preocupar tanto, restaure o estado que existia antes de o Expert Advisor ser iniciado:
Em geral, esse código parece ser bastante problemático. Não há motivo real para desativar o rastreamento do movimento do mouse ao desativar o Expert Advisor/indicador.
Não, você está errado. Há motivos reais para desativar o rastreamento do mouse. E vou provar isso agora. )
Por exemplo, você tem dois programas em execução em um gráfico. O Expert Advisor, no qual é necessário rastrear o evento de movimento do mouse. E um indicador no qual você não precisa rastrear o evento de movimento do mouse, mas precisa rastrear alguns outros eventos do gráfico.
Agora, execute esse código do Expert Advisor:
Nele, durante a inicialização, na função OnInit(), o rastreamento do evento de movimento do mouse está ativado. Mas a linha na função OnDeinit(), onde esse rastreamento deve ser desativado, foi intencionalmente comentada.
Carregue também o indicador no gráfico. Aqui está seu código:
Tanto o primeiro quanto o segundo programa imprimem uma mensagem no registro de que o evento foi recebido. Agora, remova o Expert Advisor do gráfico. Vamos supor que você tenha feito alguns cálculos com a ajuda dele e que não precise mais dele. Após sua remoção, como o evento de rastreamento do movimento do mouse não foi desativado, o indicador continua a receber esse evento. E você não precisa dele.
Você concorda agora? )