Olá, traders! Vamos falar sobre uma ferramenta que pode fazer a diferença no seu dia a dia: o Doji Hunter. Para começar, adicionei uma variável chamada RangeOfBars que permite escolher quantas barras para trás você quer analisar em busca do doji. Isso é ótimo para detectar dojis duplos também! Ao configurar o RangeOfBars para 2 ou 3, você pode buscar nas primeiras, segunda ou terceira posições de vela para identificar um possível doji duplo. Na prática, você pode criar um método para IsDoji que verifica apenas a primeira posição da vela, e um segundo método que analisa a primeira e a segunda posição para um doji duplo. Assim, você pode programar seu código para, por exemplo, não realizar uma operação se IsDoji for verdadeiro, mas sim operar na extensão se for um IsDoubleDoji.
O código original do Doji Reader 2 não lidava bem com as condições de 5 dígitos, e peço desculpas por isso, mas aqui você verá uma forma mais eficiente de escrevê-lo. Meu código pode não ser o melhor, mas é um passo na direção certa.
Mantive a funcionalidade ShowCandleBox pois achei que era uma maneira bacana de colocar um indicador no gráfico, e funcionou bem nos testes. Alguns indicadores adicionais eram legais, mas optei por manter a simplicidade. O texto extra também era interessante e um pouco educativo sobre a identificação do doji, mas novamente, preferi simplificar.
Uma mudança significativa foi a troca dos valores de configuração de inteiros para doubles. Com essa mudança, conseguimos aproveitar a precisão de 5 dígitos e obter um doji mais limpo e preciso, como você verá ao utilizá-lo. Importante: quando estiver usando um indicador baseado em double, evite usar inteiros, a menos que seja para contar algo.
Adicionei também um reset de contagem para que os boxes não continuassem indefinidamente no processo de contagem. Cada vez que o indicador processa, o contador estava aumentando sem parar. Com o reset, conseguimos uma contagem precisa que se reinicia no início de cada ciclo de processamento.
Incluí um buffer e um processo de limpeza do buffer para que você possa passar 0, por padrão, e 1 se encontrado no código usando o buffer. Mantendo o intervalo pequeno, não utilizamos CPU desnecessariamente processando dados antigos que não nos interessam.
Abaixo está um exemplo de declaração para integrar ao seu código:
extern string __DOJI_HUNTER_SETTINGS = "-----"; int RangeOfBars = 3; bool ShowCandleBox=true; //false para esconder a caixa da vela extern color BoxColor=MistyRose; //adicione sua cor favorita extern string __Regular_Doji_Settings = "-----"; bool FindRegularDoji=true; //false para desabilitar extern double MinLengthOfUpTail=0.1; //vela com cauda superior igual ou maior que isso aparecerá extern double MinLengthOfLoTail=0.1; //vela com cauda inferior igual ou maior que isso aparecerá extern double MaxLengthOfBody=0.2; //vela com corpo menor ou igual a isso aparecerá extern string __Dragonfly_Doji_Settings = "-----"; bool FindDragonflyDoji=true; //false para desabilitar extern double MaxLengthOfUpTail1=0; //vela com cauda superior igual ou maior que isso aparecerá extern double MinLengthOfLoTail1=0.1; //vela com cauda inferior igual ou maior que isso aparecerá extern double MaxLengthOfBody1=0.2; //vela com corpo menor ou igual a isso aparecerá extern string __Gravestone_Doji_Settings = "-----"; bool FindGravestoneDoji=true; //false para desabilitar extern double MinLengthOfUpTail2=0.1; //vela com cauda superior igual ou maior que isso aparecerá extern double MaxLengthOfLoTail2=0; //vela com cauda inferior igual ou maior que isso aparecerá extern double MaxLengthOfBody2=0.2; //vela com corpo menor ou igual a isso aparecerá
Aqui está um exemplo de chamada para obter os dados sobre o doji. Atenção: coloque essa chamada na seção de evento de nova vela do seu código, colocá-la no evento de tick pode causar problemas:
Doji1 = iCustom(NULL,0,"Doji_Hunter", RangeOfBars, ShowCandleBox, BoxColor, FindRegularDoji, MinLengthOfUpTail, MinLengthOfLoTail, MaxLengthOfBody, FindDragonflyDoji, MaxLengthOfUpTail1, MinLengthOfLoTail1, MaxLengthOfBody1, FindGravestoneDoji, MinLengthOfUpTail2, MaxLengthOfLoTail2, MaxLengthOfBody2, 0, 0);
O trecho de código acima vai capturar o valor da primeira vela, que pode ser 0 ou 1, onde 1 significa que o doji foi encontrado.
Publicações relacionadas
- Calendário Econômico: Monitoramento e Cache para Testes de Estratégia no MetaTrader 5
- Buffers Horários para Coleta de Dados no MetaTrader 5
- Índice de Preferência do Investidor: Um Guia Prático para Traders
- Oscilador Maravilhoso e Divergências: Um Guia para MetaTrader 5
- Pivot Point Personalizado com Horário de Fechamento Ajustável para MetaTrader 4