Kaique Mitsuo Silva Yamamoto
Mercado financeiroAutomação de EstratégiasTradingView / Pine ScriptEstratégias

TSM Donchian Moving Average System

Sistema de trading que combina médias móveis com bandas estilo Keltner Channel para identificar setups de compra e venda por coloração de candles.

Autor: UDAY_C_Santhakumar (ucsgears) — Pine Wizard Publicado: 15 de março de 2015 Fonte: TradingView Script Tipo: Indicador (overlay no gráfico de preços)


Visão geral

O TSM Donchian Moving Average System é um indicador que combina duas médias móveis simples (SMA) com bandas de volatilidade baseadas no ATR (Average True Range), formando canais ao redor de cada média. O sinal visual é dado pela coloração dos candles:

  • Candle verde → setup de compra (long)
  • Candle vermelho → setup de venda (short)

O autor descreve como um trabalho em progresso (work-in-progress), sem lógica de saída implementada.


Como funciona

Componentes

ComponenteCálculoFinalidade
malongSMA(close, 20)Tendência principal
mashortSMA(close, 5)Movimento de curto prazo
rangeSMA(ATR, 20) × Band FactorLargura dos canais
kcluppermalong + rangeBanda superior do canal lento
kcllowermalong - rangeBanda inferior do canal lento
kcsuppermashort + rangeBanda superior do canal rápido
kcslowermashort - rangeBanda inferior do canal rápido

Lógica de sinal

Setup Long  → close > kclupper[1]  E  close > kcsupper[1]
Setup Short → close < kcllower[1]  E  close < kcslower[1]

O preço precisa fechar acima de ambas as bandas superiores para sinalizar long, ou abaixo de ambas as bandas inferiores para sinalizar short. O uso de [1] aplica um deslocamento de 1 barra, comparando com os valores do candle anterior — evitando repintura.


Parâmetros

ParâmetroPadrãoDescrição
Long Period20Período da SMA lenta e do ATR
Short Period5Período da SMA rápida
Band Factor1Multiplicador aplicado ao ATR para largura das bandas

Código-fonte

Script original em Pine Script v1 (sintaxe legada). Funciona no TradingView mas pode gerar avisos de depreciação.

study("TSM Donchian Moving Average System", overlay = true)

a = input(20, title = "Long Period")
b = input(5, title = "Short Period")
ca = input(1, title = "Band Factor")

// Médias móveis
malong  = sma(close, a)
mashort = sma(close, b)

// Bandas de volatilidade (ATR-based)
range    = sma(tr, a) * ca
kclupper = malong  + range
kcllower = malong  - range
kcsupper = mashort + range
kcslower = mashort - range

// Plotagem
plot(malong,   offset=1, title="SMA Long")
plot(mashort,  offset=1, title="SMA Short")
plot(kclupper, offset=1, title="KC Upper")
plot(kcllower, offset=1, title="KC Lower")

// Sinais por coloração de candle
setuplong  = close > kclupper[1] and close > kcsupper[1] ? green : na
setupshort = close < kcllower[1] and close < kcslower[1] ? red   : na

barcolor(setuplong)
barcolor(setupshort)

Interpretação visual

         kclupper ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
         kcsupper  ─  ─  ─  ─  ─  ─  ─
─────── malong (SMA 20) ───────────────
─────── mashort (SMA 5) ──────────────
         kcslower  ─  ─  ─  ─  ─  ─  ─
         kcllower ─ ─ ─ ─ ─ ─ ─ ─ ─ ─

  [candle verde]  = preço acima das duas bandas superiores
  [candle vermelho] = preço abaixo das duas bandas inferiores

Pontos de atenção

O que está implementado

  • Identificação visual de setups de entrada
  • Duas médias com canais de volatilidade

O que não está implementado

  • Lógica de saída (stop-loss, take-profit)
  • Filtro de tendência (o sistema sinaliza em qualquer contexto)
  • Gestão de risco / position sizing

Antes de usar em trading real

  1. Defina regras de saída — por exemplo, strategy.exit() com stop baseado em ATR
  2. Aplique um filtro de tendência (ex: só operar longs acima da SMA 200)
  3. Faça backtesting com comissão e slippage configurados
  4. Valide em múltiplos ativos e timeframes

Adaptação para Pine Script v6

Para modernizar o script, as principais mudanças são:

//@version=6
indicator("TSM Donchian Moving Average System", overlay=true)

a  = input.int(20, title="Long Period")
b  = input.int(5,  title="Short Period")
ca = input.int(1,  title="Band Factor")

malong  = ta.sma(close, a)
mashort = ta.sma(close, b)
rng     = ta.sma(ta.tr, a) * ca  // "range" é palavra reservada em v6

kclupper = malong  + rng
kcllower = malong  - rng
kcsupper = mashort + rng
kcslower = mashort - rng

plot(malong,   offset=1, title="SMA Long",   color=color.blue)
plot(mashort,  offset=1, title="SMA Short",  color=color.orange)
plot(kclupper, offset=1, title="KC Upper",   color=color.new(color.blue, 60))
plot(kcllower, offset=1, title="KC Lower",   color=color.new(color.blue, 60))

isLong  = close > kclupper[1] and close > kcsupper[1]
isShort = close < kcllower[1] and close < kcslower[1]

barcolor(isLong  ? color.green : isShort ? color.red : na)

Mudanças: sma()ta.sma(), trta.tr, input()input.int(), range renomeado para rng, cores usando color.green/color.red.


Contexto histórico

Publicado em 2015, o script reflete a sintaxe Pine Script v1, quando a linguagem ainda estava em seus primeiros estágios. O autor UDAY_C_Santhakumar foi um dos primeiros contribuidores da comunidade Pine Wizard no TradingView. A lógica mistura conceitos de:

  • Donchian Channels (canais de máximas/mínimas) — embora o nome mencione Donchian, a implementação usa canais ATR (mais próximos de Keltner Channels)
  • Dual Moving Average para capturar tanto tendência primária quanto impulso de curto prazo

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

On this page