Estratégia dupla de acompanhamento de tendências

Autora:ChaoZhang, Data: 2024-01-16 15:03:55
Tags:

img

Resumo

A estratégia de rastreamento de tendências duplas é uma estratégia composta que combina o indicador de supertendência, a média móvel exponencial dupla (DEMA) e as bandas de Bollinger.

Estratégia lógica

A estratégia consiste em três partes principais:

  1. Indicador de Supertrend: Calcula a linha de ruptura para cima e linha de ruptura para baixo para determinar a direção da tendência atual.

  2. DEMA (Double Exponential Moving Average): Um indicador de rastreamento de tendências que combina as características da média móvel simples e da média móvel exponencial, que pode responder às mudanças de preço mais rapidamente.

  3. Bandas de Bollinger: representa a faixa de flutuação dos preços.

Quando o indicador Supertrend e o DEMA emitem ambos sinais de compra/venda, a estratégia entra na posição correspondente.

Vantagens

  1. A combinação de múltiplos indicadores reduz os falsos sinais.

  2. O indicador Supertrend é insensível a pequenas variações de preços e só gera sinais em pontos de virada da tendência, evitando uma frequência excessiva de negociação.

  3. A curva suave do DEMA avalia com precisão e fiabilidade as tendências de longo prazo.

  4. As bandas de Bollinger ajudam a determinar os pontos de inversão da tendência.

Riscos e soluções

  1. Os parâmetros de supertendência excessivamente sensíveis podem gerar mais ruído.

  2. Um longo período de DEMA resulta em uma baixa tendência de capacidade de acompanhamento.

  3. Indicadores inconsistentes quando combinados com o julgamento de vários indicadores.

Orientações de otimização

  1. Teste diferentes períodos ATR e parâmetros multiplicadores para encontrar a combinação ideal para o indicador de supertendência.

  2. Optimize o parâmetro do período DEMA.

  3. Adicionar outros indicadores auxiliares como KDJ, MACD etc.

  4. Introduzir estratégias de stop loss.

Resumo

A estratégia de rastreamento de tendências dupla combina os pontos fortes da Supertrend, DEMA e Bollinger Bands usando múltiplos indicadores, melhorando a qualidade do sinal enquanto captura tendências.


/*backtest
start: 2023-01-09 00:00:00
end: 2024-01-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, precision=2)

// Input parameters for Supertrend
atrLength = input(title="ATR Period", type=input.integer, defval=12)
src = input(hl2, title="Source")
multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method?", type=input.bool, defval=true)
showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true)

// Input parameters for DEMA
demaLength = input(200, title="DEMA Period")
showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true)

// Calculate ATR for Supertrend
atr2 = sma(tr, atrLength)
atr = changeATR ? atr(atrLength) : atr2

// Calculate Supertrend
up = src - (multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Plot Supertrend
upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))

dnPlot = plot(showSupertrend ? (trend == 1 ? na : dn) : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)

longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0))
shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0))

fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

// Alert conditions
alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!")
alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!")

// Calculate DEMA
ema1 = ema(close, demaLength)
dema = 2 * ema1 - ema(ema1, demaLength)

// Plot DEMA with white color
plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2)

// Add push notification on mobile if buy and sell occurred
if (buySignal)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell")
    alert("Buy Signal - Supertrend")

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Cover")
    alert("Sell Signal - Supertrend")


Mais.