Tabela de conteúdos
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.
⚙️ 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):
- Se a máxima rompeu o topo → caixa é abortada, volta ao Estado 0
- Se a mínima for menor que o candidato → atualiza o fundo para o novo valor e zera o contador
- 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
🎛️ 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



