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

 
C-4:
O MT5 tem atualização assíncrona das propriedades do gráfico. Ou seja, o fato de definirmos uma propriedade não significa que o terminal a tenha captado imediatamente. A função ChartRedraw() é usada para que todas as propriedades sejam lidas novamente pelo terminal. Você também pode usar as funções ChartGet... ObjectGet e, nesse caso, as propriedades também serão lidas novamente.
Não encontrei essa informação em lugar algum. Eu me deparei com ela, encontrei a solução e agora vou saber.
 
komposter:
Não encontrei essas informações em lugar algum. Encontrei a solução, agora vou saber.

O que é isso? Aqui, no início da seção Operations with charts (Operações com gráficos ):

Funções para trabalhar com gráficos. Todas as operações com gráficos são aplicáveis somente em Expert Advisors e scripts.

As funções que definem as propriedades de um gráfico são, na verdade, usadas para enviar comandos para alterá-lo. Se essas funções forem executadas com êxito, o comando será incluído na fila de eventos gerais do gráfico. A alteração de um gráfico é feita durante o processamento da fila de eventos do gráfico em questão.

Por esse motivo, você não deve esperar uma atualização visual imediata do gráfico após chamar essas funções. Em geral, a atualização do gráfico é realizada pelo terminal automaticamente por eventos de alteração - chegada de nova cotação, alteração do tamanho da janela do gráfico, etc. Para forçar a atualização da aparência do gráfico, use o comando ChartRedraw() para redesenhar o gráfico.

 
komposter:
Não encontrei essas informações em lugar algum. Encontrei a solução, agora vou saber.
É claro, porque essas informações não estão disponíveis em lugar algum (mas acontece que estão, veja acima:))). Eu mesmo estava atormentado com esse problema, até que procurei a central de atendimento. Lá eles me disseram que as alterações nas propriedades dos objetos no gráfico ocorrem de forma assíncrona. E, a julgar pelo seu exemplo, isso diz respeito às propriedades do próprio gráfico.
 
Rosh:

O que é exatamente? Aqui no início da seção Operações com gráficos:

Eu não disse que não estava lá, apenas não a encontrei (ou esqueci). Obrigado.

E quanto à minha sugestão de gerar um evento CHART_CHANGE ao alterar as propriedades do gráfico, como o sinalizador de rastreamento de eventos do mouse? Talvez você possa fazer isso?

 
C-4:
É claro, porque essas informações não estão disponíveis em lugar algum (afinal, estão, veja acima:))). Eu mesmo fiquei atormentado com esse problema, até que recorri à central de atendimento. Lá eles me disseram que as alterações nas propriedades dos objetos no gráfico ocorrem de forma assíncrona. E, a julgar pelo seu exemplo, isso diz respeito às propriedades do próprio gráfico.

Para saber mais, consulte a seção Objetos gráficos:

Um grupo de funções projetado para trabalhar com objetos gráficos relacionados a qualquer gráfico especificado.

As funções que especificam as propriedades dos objetos gráficos, bem como as operações de criação de objetos ObjectCreate() e de movimentação de objetos ObjectMove() no gráfico, são, na verdade, usadas para enviar comandos ao gráfico. Se essas funções forem executadas com êxito, o comando será incluído na fila geral de eventos do gráfico. A alteração visual das propriedades dos objetos gráficos é realizada durante o processamento da fila de eventos de um determinado gráfico.

Por esse motivo, você não deve esperar uma atualização visual imediata dos objetos gráficos após chamar essas funções. Em geral, a atualização dos objetos gráficos no gráfico é realizada pelo terminal automaticamente pelos eventos de alteração - chegada de uma nova cotação, alterações no tamanho da janela do gráfico etc. Para a atualização forçada de objetos gráficos, use o comando ChartRedraw() para redesenhar o gráfico.

 
Rosh:

Mais na seção Objetos gráficos:

Está claro e familiarizado com os objetos, mas eu esperava algo diferente das propriedades do gráfico.

Não devo repetir minha sugestão? Ou devo colocá-la em um service-desk?

 
Para o autor, muito obrigado pelo excelente artigo.
 
MetaQuotes Software Corp.:

Novo artigo MQL5 Bylaw Manual : Controles da subjanela do indicador - Botões foi publicado:

Autor: Anatoli Kazharsk

Muito bom o tutorial, espero realmente que você publique um pouco mais sobre isso, muito obrigado!

 

Anatoli,

Gostaria de agradecer suas contribuições para a comunidade MQL5. Seus exemplos me fizeram avançar vários meses no desenvolvimento de meu próprio código. Mais uma vez, muito obrigado.

Preciso usar esse "indicador" para os botões Open Long, Open Short, Close All e Set Trailing Stop. Meu problema é que preciso interagir com meu EA para que eu possa

1) acessar essas funções dentro do EA e

2) obter recomendações do EA piscando o botão "Open Long" quando o pSAR, o CCI, o MACD ou outros indicadores forem acionados.

Portanto, minha pergunta é a seguinte: Como posso fazer com que o EA se comunique com os botões do indicador e com que os botões do indicador interajam com o EA?

Agradeço antecipadamente,

CipherPips

 
CipherPips:

Obrigado!

Acho que essa é a versão de que você mais gosta: Interfaces gráficas I: Preparação da estrutura da biblioteca (Capítulo 1)

Siga a continuação dessa série, pois haverá muitos exemplos detalhados.