Kaique Mitsuo Silva Yamamoto
Mercado financeiroAutomação de EstratégiasTradingView / Pine ScriptBibliotecasIndicadores Técnicos

obvFilter

Biblioteca Pine Script que implementa o OBV (On-Balance Volume) com suavização por múltiplos tipos de médias móveis (fast/slow) para filtrar ruído e identificar divergências.

Tipo: Biblioteca (library) Categoria: Indicadores Técnicos Fonte: TradingView Script


Visão geral

obvFilter implementa o OBV (On-Balance Volume) com uma camada de suavização configurável — em vez do OBV bruto (que pode ser muito ruidoso), a biblioteca aplica dois tipos de MA (rápida e lenta) sobre o OBV para gerar sinais mais claros.

O que é OBV?

OBV (On-Balance Volume):
  Se close > close[1] → OBV += volume (compradores controlaram o candle)
  Se close < close[1] → OBV -= volume (vendedores controlaram o candle)
  Se close = close[1] → OBV inalterado

OBV crescente com preço crescente  → confirmação de alta
OBV decrescente com preço crescente → divergência bearish ⚠️

Como funciona

Duas médias sobre o OBV

OBV bruto  ──────────────────────────────────────────────
OBV Fast MA  ── ──────────── (período curto, ex: EMA 5)
OBV Slow MA  ──────────────── (período longo, ex: EMA 20)

Sinal bullish: Fast MA cruza ACIMA de Slow MA
Sinal bearish: Fast MA cruza ABAIXO de Slow MA

API / Funções

FunçãoParâmetrosRetornoDescrição
calculate()source, volumefloatOBV bruto
fastMA()obv, len, typefloatMA rápida sobre o OBV
slowMA()obv, len, typefloatMA lenta sobre o OBV
isBullish()fast, slowboolFast MA > Slow MA
isBearish()fast, slowboolFast MA < Slow MA
divergence()obv, price, lookbackstring"bullish", "bearish" ou "none"

Exemplo de uso

//@version=6
indicator("OBV Filter", overlay=false)

import author/obvFilter/1 as of

// Calcular OBV
obv = of.calculate(close, volume)

// Suavizar com duas MAs
fastLen  = input.int(5,  "Fast MA Length")
slowLen  = input.int(20, "Slow MA Length")
maType   = input.string("EMA", "MA Type", options=["SMA","EMA","WMA","HMA","VWMA"])

fastObv = of.fastMA(obv, fastLen, maType)
slowObv = of.slowMA(obv, slowLen, maType)

// Plotar
plot(obv,    title="OBV",      color=color.gray,   linewidth=1)
plot(fastObv, title="OBV Fast", color=color.blue,  linewidth=2)
plot(slowObv, title="OBV Slow", color=color.orange, linewidth=2)

// Colorir fundo por sinal
bgcolor(of.isBullish(fastObv, slowObv) ? color.new(color.green, 90) : na)
bgcolor(of.isBearish(fastObv, slowObv) ? color.new(color.red,   90) : na)

// Verificar divergência
div = of.divergence(obv, close, 20)
if div == "bearish"
    label.new(bar_index, obv, "⚠️ Div Bearish", color=color.red)

Integrações

ScriptComo combinar
Cometreon_PublicUsar tipos de MA avançados (HMA, T3) sobre o OBV
Three Moving AverageOBV como filtro de volume para sinais de MA
SharelineCoreCombinar OBV com CVD para análise de fluxo completa

Limitações

LimitaçãoImpacto
OBV assume que todo volume de um candle foi compra ou vendaOversimplificação — na realidade, volume é misto
Divergências podem durar muito tempoSinal antecipado demais sem gestão de risco
Volume não disponível em todos os instrumentosÍndices sintéticos e alguns CFDs não têm volume real

Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento. Resultados passados não garantem resultados futuros.

On this page