Novo artigo Indicadores múltiplos em um gráfico (Parte 04): Iniciando pelo EA foi publicado:
Autor: Daniel Jose
Ola Daniel, estou acompanhando seus artigos, mas e a parte 03?
Houve um pequeno problema no momento que foi pedido a liberação para publicação, mas já autorizei a publicação da Parte 03, em breve ela estará disponível também, este problema foi mais causado por conta da quantidade de artigos que eu já envie ... atualmente tem outros 15 artigos para eles analisarem, todos envolvidos no desenvolvimento deste EA e em cada um a coisa vai ficando cada vez mais complexa .... mas obrigado por estar acompanhando a serie ... aguarde novidades imensas a partir do artigo 05, a partir dali a coisa irá realmente valer a pena, pois se tornará algo de gente grande, estes primeiro são só para apresentar o que irá vim pela frente ...😁👍
Olá, Daniel,
Estou tendo problemas com indicadores multicoloridos e seus artigos, que estou gostando, indicam que você pode conhecer a solução.
Quero produzir uma função que defina todos os atributos do indicador sem usar as opções de #property, por exemplo, #property indicator_color1 clrCrimson,clrWhite,clrLime
O que estou descobrindo no programa de teste abaixo é que, com a #property indicator_color1 clrCrimson,clrWhite,clrLime incluída, o programa funciona corretamente, ao passo que, se eu a comentar, o programa não funcionará corretamente.Nesse caso, parece que ele está plotando apenas alguns dos pontos de dados, como se estivesse usando um período de tempo "superior?" ou pulando vários pontos de dados. Suspeito que a diretiva de cor da propriedade esteja definindo mais atributos que não identifiquei quando várias cores são especificadas.
O segundo problema é que, obviamente, não entendo os detalhes e os requisitos do uso de gráficos multicoloridos. Pesquisei na documentação e não encontrei nenhum artigo que fornecesse uma visão geral de como usar indicadores multicoloridos. Embora o primeiro gráfico mude de cor corretamente, o segundo, que representa os mínimos, não muda de cor de acordo com minha chamada de função. Esse gráfico requer que todas as três propriedades: type2, color2 e width2 funcionem corretamente. Também estou perplexo com o fato de as declarações de propriedade usarem 2 em vez de 3. Usei o indicador Laguerre Adaptive Filter de Mladen para identificar que os indicadores de propriedade usam o número do gráfico, 2, e não o número do indicador 3 para serem exibidos corretamente.
Qualquer sugestão, referência ou ajuda será muito bem-vinda
Atenciosamente, CapeCoddah
Qualquer sugestão, referência ou ajuda será muito bem-vinda.
Atenciosamente, CapeCoddah
Você está um pouco confuso, eu entendo... mas toda a confusão está no fato de que você não está realmente observando os detalhes do seu código. Tentarei explicar alguns dos detalhes que estão no comentário e, em seguida, falarei um pouco sobre seu código....
O primeiro ponto é que você pode até produzir um indicador multicolorido sem usar a #property indicator_colorN, mas para o usuário e até para você é mais prático, mais seguro e mais simples de entender e modificar o código, pois tudo o que você tem que fazer é ir até as propriedades é modificar as cores ali presentes, e para o usuário é mais simples, pois ele só terá que escolher a cor a ser modificada e fazer a alteração, isso na janela padrão que o MT5 cria para os indicadores. De certa forma, você já está fazendo a coisa certa ao usar o comando PlotIndexSetInteger para gerar as mudanças de cor, e é assim quando não usamos a #property indicator_colorN, mas quando usamos as propriedades, muitas vezes não faz sentido usar o comando PlotIndexSetInteger para definir outras cores, Isso ocorre porque a manutenção pode ser mais complicada e mais confusa para o usuário, pois ele pode não entender realmente o que o padrão de cores está tentando dizer, mesmo que o código seja seu e você seja o único a usar o indicador, ele não faz muito sentido, a menos que, em casos raros, você crie um padrão de cores dinâmico.
Agora, sobre o segundo ponto: O problema nesse caso é que você está confundindo o número de coisas que o indicador vai plotar ( 2 para 2 linhas ) com as propriedades do objeto ( nesse caso linha ) e para que a linha seja plotada, na verdade você precisa declarar pelo menos 3 informações, que são TypeN, ColorN, WidthN, onde o N indica o número do objeto, com prática e tempo você vai acabar entendendo essas pequenas diferenças entre a propriedade do indicador e as propriedades dos objetos que ele usa... Não desista... continue estudando e logo as coisas ficarão mais claras... 😁👍
Agora vamos ver um pouco de seu código... Não vou mostrar exatamente como corrigi-lo (se eu fizer isso, não será divertido... .... 😁👍✌ ) Quero que você preste atenção no seguinte fato, e isso é importante:
Buf=Set_IndexBuffer5(Buf, dataHi, INDICATOR_DATA , DRAW_COLOR_LINE , 4 , "High" , clrYellow , clrWhite , clrDodgerBlue ); Buf=Set_IndexBuffer5(Buf, dataHic, INDICATOR_COLOR_INDEX ); Buf=Set_IndexBuffer5(Buf, dataLo, INDICATOR_DATA , DRAW_COLOR_LINE , 4 , "Low" , clrYellow , clrWhite , clrDodgerBlue ); Buf=Set_IndexBuffer5(Buf, dataLoc, INDICATOR_COLOR_INDEX );
Observe que eu marquei duas coisas em seu código... agora vamos ver o que está acontecendo quando ele é reproduzido no gráfico....

Veja que apenas um dos rótulos está como você declarou no código, apenas a HIGH .... e a LOW ?!?!?! onde ela está ?!?! esse é o primeiro ponto que você deve corrigir, pois o fato da tag LOW não estar sendo mostrada indica que o padrão de cor que está sendo utilizado é o que está declarado na #property indicator_color2, ou seja, você tem uma falha nesse ponto, se você tentar remover as propriedades do indicador 2 que realmente criam a linha LOW, mesmo mantendo o restante do código, a linha HIGH será plotada, mas a linha LOW não.... por quê?!?! porque, na verdade, você não está definindo as informações necessárias para plotar a linha LOW, isso dinamicamente por meio do uso da chamada PlotIndexSetInteger... parece estranho... mas é isso que está acontecendo ....
Quando você conseguir corrigir isso, se realmente quiser usar a maneira dinâmica de declarar os dados do objeto de linha usando PlotIndexSetInteger, poderá remover os comandos de compilação #property indicator_color da cena, pois os dados necessários serão definidos dinamicamente, mas se você não quiser fazer esse esforço, tudo bem....
Agora quero que você olhe para a imagem acima e compare-a com as cores que está usando em #property indicator_color ... observe essas cores com muito cuidado .... se fizer isso, você perceberá algo estranho lá .... novamente não vou dizer para não perder a graça, mas tente usar cores diferentes, sem repetir nenhuma delas... quando você as repete, fica mais difícil entender onde está o erro... 😁👍
Agora um último detalhe: O fato de você achar que ele está plotando apenas alguns pontos e pulando outros pode ser por dois motivos: O padrão de cores não está contrastando com o fundo do gráfico, tente utilizar cores que contrastem com o fundo do gráfico, e o segundo, mas não acredito que seja de fato o caso, é que pode estar havendo uma falha no evento OnCalcule, você está retornando -1 ou o valor de i, o correto é retornar taxas_total, então altere isso no código para evitar problemas futuros...
Olá, Daniel,
Pensei que as características do desenho fossem definidas usando a especificação de buffer como no MQ4, enquanto que, pelo menos para as especificações DRAW_COLOR..., as características do desenho são definidas usando o identificador de plotagem sequencial. Além disso, a propriedade indicator_colorX tem, na verdade, duas funções: primeiro, contar e definir o número de cores e, em seguida, definir cada cor especificada em sua posição adequada na matriz.Estou anexando dois arquivos: o Color Test, que agora está funcionando corretamente, embora precise de mais refinamentos; e o MACD Original2_1 de MLADEN, ligeiramente modificado. O programa de Mladen é interessante porque ele definiu dois gráficos, mas usa apenas um buffer de índice de cores.
Obrigado por sua ajuda
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Indicadores múltiplos em um gráfico (Parte 04): Iniciando pelo EA foi publicado:
Em artigos anteriores, eu expliquei como criar um indicador com múltiplas sub janela, mas apesar de ser interessante de se fazer, quando usamos um indicador personalizado. Aqui vamos entender como adicionar múltiplas janelas em um EA.
Quanto eu decidi criar as coisas usando OOP ( Programação Orientada a Objetos ) fiz isto por já saber que existem vantagens muito grandes em se usar tal abordagem, entre elas está a segurança e a herança, apesar de termos também o polimorfismo, mas este iremos usar mais para frente quando formos criar um sistema de ordens cruzadas, mas aqui vamos usar uma das boas coisas que a OOP nos traz, a herança. Pois bem, a nossa classe C_TemplateChart já se encontra totalmente funcional, e vendo isto, não queremos ter o trabalho de reprogramar tudo de novo, ou correr o risco de adicionar códigos na classe, e estes códigos impedirem a classe de ser usada em outros locais. Solução usamos a herança e assim adicionamos novos códigos ou funcionalidades sem mudar em nada o código original.
Usar a herança nos traz diversos benefícios, entre eles temos: O código já testado permanece testado; a complexidade cresce sem um igual crescimento na quantidade de código; apenas novas funcionalidades de fato precisam se testadas; o que não muda simplesmente é herdado garantindo a estabilidade, enfim, a coisa vai melhorando com o mínimo de esforço, mas com o máximo de segurança, para entender veja o esquema abaixo.
Autor: Daniel Jose