Discussão do artigo "Indicadores baseados na classe CCanvas: Preenchendo canais com transparência"

 

Novo artigo Indicadores baseados na classe CCanvas: Preenchendo canais com transparência foi publicado:

Neste artigo, abordaremos os métodos de criação de indicadores personalizados que são desenhados usando a classe CCanvas da Biblioteca Padrão no MetaTrader 5. Também discutiremos as propriedades dos gráficos para a transformação de coordenadas. Daremos especial atenção aos indicadores que preenchem a área entre duas linhas usando transparência.

Agora faremos algumas pequenas atualizações para fazer a função funcionar.

  1. Vamos atualizar nossa função Redraw, removendo os parâmetros adicionados no indicador anterior e adicionando a função DrawFilling.
  2. Adicionaremos nossa função Redraw em OnCalculation para atualizar o desenho quando os valores do indicador forem alterados.
  3. Alteraremos o nome do objeto passado como parâmetro ao chamar CreateBitmapLabel.


Agora podemos ver como o gráfico fica com dois envelopes de diferentes períodos e um objeto retangular.

Envelopes usando CCanvas com canal alfa = 128

Autor: Samuel Manoel De Souza

 

Bom dia!


É realista perceber que, ao rolar o gráfico, o quadro segue os candlesticks sem atraso, como no caso dos objetos?

 
Petr Zharuk #:

Bom momento!

É realista perceber que, ao rolar o gráfico, o quadro segue os candlesticks sem atraso, como no caso dos objetos?

É possível mexer com OBJ_BITMAP, quando o canto superior esquerdo do quadro está vinculado ao preço-tempo com sobreposição da própria janela, ou seja, quando o tamanho da tela é maior do que o tamanho da própria janela.
Nesse caso, é possível obter uma ausência quase total de atraso.
Mas surge o problema de alterar a escala vertical e o modelo de evento se torna muito mais complicado.
É por isso que eu pessoalmente não faria isso.
Há outra alternativa: desativar o gráfico nativo e criar seu próprio gráfico na tela. Mas isso é adequado se você não precisar usar outros indicadores nesse gráfico.

 

Excelente trabalho, Samuel!

Mas vi uma situação aqui: ao usá-lo em meu indicador, toda vez que o eixo PRICES é redimensionado, vemos que o CANVAS não se atualiza.

Veja as imagens:


e aqui, depois de redimensionar manualmente a janela e tudo ter sido corrigido automaticamente, quando o candle atual cruzou os limites do gráfico, causando um redimensionamento completo dos candles, o CANVAS não redimensionou novamente, como deveria:




Além disso, vejo que a função DrawFilling consome muito tempo se a usarmos duas vezes, ou seja, para plotar duas cores entre três linhas (veja acima). Acho que seria interessante se pudéssemos otimizar a rotina para aumentar a velocidade.

De qualquer forma, ótimo trabalho e artigo - parabéns!