profitchart:youtube:codigos:indicador_darvas_box

Indicador Darvas Box — Caixas de Consolidação

Download

Vídeos


📋 Descrição

Indicador que implementa o Darvas Box — método criado por Nicolas Darvas nos anos 1950 para identificar caixas de consolidação no preço.

Detecta automaticamente topos e fundos confirmados, desenha as caixas e sinaliza rompimentos com setas direcionais.


🎯 O que é o Darvas Box

Nicolas Darvas, um dançarino profissional, desenvolveu este método enquanto operava ações nos anos 1950, documentado no livro “How I Made $ 2,000,000 in the Stock Market”.

A ideia central é que os preços se movem em “caixas”, faixas de consolidação entre um teto (resistência) e um piso (suporte).

E sinaliza compras quando o preço rompe a resistência (topo da caixa), e vendas quando o preço rompe o suporte (fundo da caixa) visando seguir tendências em ações ou ativos financeiros.

Elemento Significado
Topo da caixa Máxima confirmada — resistência do range
Fundo da caixa Mínima confirmada — suporte do range
Rompimento para cima Preço rompeu o topo — sinal de compra
Rompimento para baixo Preço rompeu o fundo — sinal de venda

Quando o preço rompe uma caixa, uma nova caixa se forma.

  • Em tendências de alta, as caixas se empilham progressivamente mais altas.
  • Em tendências de baixa, as caixas se empilham progressivamente mais baixas.

Sinais de breakout do Darvas Box


⚙️ Como Funciona

O algoritmo opera como uma máquina de estados com 3 estados:

1️⃣ Buscar o Topo (Estado 0)

O algoritmo procura uma máxima que seja confirmada como resistência (topo) da caixa.

  • A cada candle, compara a máxima com o candidato atual (buscando 2 confirmações)
    • Se a máxima for maior ou igual → atualiza o candidato para o novo valor e zera o contador
    • Se a máxima for menor → aumenta o contador de confirmações
  • Após 2 confirmações consecutivas → topo validado, avança para Estado 1 (busca do fundo)

2️⃣ Buscar o Fundo (Estado 1)

Com o topo confirmado, o algoritmo busca a mínima que será o suporte (fundo) da caixa.

  • O fundo candidato começa na mínima do candle que confirmou o topo
  • A cada candle, verifica 3 condições (nesta ordem de prioridade):
    1. Se a máxima rompeu o topo → caixa é abortada, volta ao Estado 0
    2. Se a mínima for menor que o candidato → atualiza o fundo para o novo valor e zera o contador
    3. Se a mínima for maior ou igual → aumenta o contador de confirmações
  • Após 1 confirmação → fundo validado, caixa torna-se ativa, avança para Estado 2

3️⃣ Manter a Caixa (Estado 2)

A caixa permanece ativa até que ocorra um rompimento.

  • A cada candle, verifica se o preço saiu da caixa:
    • Se a máxima rompeu o topo → rompimento de alta (▲) — sinal de compra
    • Se a mínima rompeu o fundo → rompimento de baixa (▼) — sinal de venda
    • Se o preço permanece dentro → caixa continua
  • No rompimento, a caixa encerra e o algoritmo inicia nova busca usando a máxima do candle de rompimento como novo candidato

Fluxo do algoritmo Darvas Box


🎛️ Parâmetros

Este indicador não possui parâmetros configuráveis — os valores de confirmação são fixos:

Regra Valor Descrição
Confirmação do topo 2 barras Barras consecutivas com máxima menor que o candidato
Confirmação do fundo 1 barra Barra com mínima maior ou igual ao candidato do fundo
Nota: Outras plataformas permitem configurar a quantidade de barras de confirmação.

📐 Os "5 Níveis" da Nelogica

A documentação original da Nelogica menciona “5 níveis” no cálculo. Correspondem aos estados internos:

Nível Estado Descrição
1 Busca Topo (estado=0) Procurando nova máxima
2 Busca Topo (estado=0) Confirmação do topo
3 Busca Fundo (estado=1) Topo confirmado, buscando fundo
4 Confirmação Fundo (estado=1) Transição para caixa ativa
5 Caixa Ativa (estado=2) Caixa confirmada, aguardando breakout
Nota: Apenas uma suposição já que não há documentação detalhada sobre cada nível.

💻 Código NTSL

// ============================================
// DARVAS BOX
// Caixas de consolidacao com setas de breakout
// estado => 0=busca topo, 1=busca fundo, 2=caixa ativa
Parametro
  Plotar_Candidatos_Topo(verdadeiro);
  Plotar_Candidatos_Fundo(verdadeiro);
  Plotar_Estado(falso);
 
var
  estado, topoConfContador, fundoConfContador : inteiro;
  topoCandidato, fundoCandidato : real;
 
procedimento SetPlot(Linha : inteiro; Valor : real; Cor : inteiro; Espessura : inteiro);
inicio
 PlotN(Linha, Valor);
 SetPlotColor(Linha, Cor);
 SetPlotWidth(Linha, Espessura);
fim;
 
inicio
 
  // BUSCA TOPO
  se (estado = 0) entao
  inicio
    se (Maxima >= topoCandidato) entao
    inicio
      topoCandidato := Maxima;
      topoConfContador := 0;
    fim
    senao se (Maxima < topoCandidato) entao
    inicio
      topoConfContador := topoConfContador + 1;
      se (topoConfContador >= 2) entao
      inicio
        estado := 1;
        fundoCandidato := Minima;
        fundoConfContador := 0;
      fim;
    fim;
  fim
 
  // BUSCA FUNDO
  senao se (estado = 1) entao
  inicio
    se (Maxima > topoCandidato) entao
    inicio
      topoCandidato := Maxima;
      topoConfContador := 0;
      estado := 0;
    fim
    senao se (Minima < fundoCandidato) entao
    inicio
      fundoCandidato := Minima;
      fundoConfContador := 0;
    fim
    senao se (Minima >= fundoCandidato) entao
    inicio
      fundoConfContador := fundoConfContador + 1;
      se (fundoConfContador >= 1) entao
        estado := 2;
    fim;
 
  fim
 
  // CAIXA ATIVA
  senao se (estado = 2) entao
  inicio
 
    se (Maxima > topoCandidato) entao
    inicio
      // Rompimento para cima
      PlotText("▲", clVerde, 2, 24);
      topoCandidato := Maxima;
      topoConfContador := 0;
      estado := 0;
    fim
    senao se (Minima < fundoCandidato) entao
    inicio
      // Rompimento para baixo
      PlotText("▼", clVermelho, 0, 24);
      topoCandidato := Maxima;
      topoConfContador := 0;
      estado := 0;
    fim;
 
  fim;
 
  se (estado = 0) entao
  inicio
    Se Plotar_Candidatos_Topo entao SetPlot(1, topoCandidato, clDkGray, 1);
    Se Plotar_Candidatos_Fundo entao SetPlot(2, fundoCandidato, clDkGray, 1);
  fim
 
  senao se (estado = 1) entao
  inicio
    SetPlot(1, topoCandidato, clAmarelo, 3);
    Se Plotar_Candidatos_Fundo entao SetPlot(2, fundoCandidato, clDkGray, 1);
  fim
 
  senao se (estado = 2) entao
  inicio
    SetPlot(1, topoCandidato, clAmarelo, 3);
    SetPlot(2, fundoCandidato, clAmarelo, 3);
  fim;
 
  Se Plotar_Estado entao PlotText(estado, clBranco, 2, 26);
 
fim;

🔍 Como Interpretar

📈 Linhas do Indicador

Visual Significado
Cinza fino (topo) Topo candidato — ainda buscando confirmação
Cinza fino (fundo) Fundo tentativo — menor mínima desde o candidato de topo
Amarelo (topo) Topo confirmado — 2 barras consecutivas de máximas menores
Amarelo (fundo) Fundo confirmado — caixa ativa

⬆️ Setas de Breakout

Seta Significado
▲ Verde Breakout de alta — preço rompeu o topo da caixa
▼ Vermelho Breakout de baixa — preço rompeu o fundo da caixa

📦 Padrões de Caixas

Padrão Interpretação
Caixas empilhando para cima Tendência de alta — breakouts consecutivos para cima
Caixas empilhando para baixo Tendência de baixa — breakouts consecutivos para baixo
Caixa grande (muitas barras) Consolidação prolongada — breakout tende a ser mais forte
Caixa pequena (4-5 barras) Consolidação rápida — mercado decidindo rápido

⚠️ Limitações

Limitação Descrição
Falsos rompimentos O indicador não distingue rompimentos verdadeiros de falsos. Um rompimento pode reverter rapidamente. Combine com volume ou outros filtros.
Mercados laterais Em lateralização prolongada, as caixas podem ser muito pequenas e gerar muitos sinais sem tendência definida.
Sem filtro de tendência O algoritmo forma caixas em qualquer condição de mercado. Para maior confiabilidade, combine com médias móveis ou ADX.

➕ Mais informações

«««< Updated upstream «««< Updated upstream 🗃️ ScApp_DarvasBox.psf

📽️ Vídeo explicativo

Stashed changes

* 🗃️ ScApp_DarvasBox.psf

»»»> Stashed changes



profitchart/youtube/codigos/indicador_darvas_box.txt · Última modificação: por 127.0.0.1