Estratégia de parada dinâmica de arrasto do SMA-ATR

Autora:ChaoZhang, Data: 2024-02-06 10:06:29
Tags:

img

Resumo

Esta estratégia é uma estratégia de negociação de longo prazo que define stop loss dinâmico baseado na média móvel simples (SMA) e na faixa média verdadeira (ATR).

Estratégia lógica

Entre longo quando o preço de fechamento cruza acima do SMA 200 mais ATR 14, feche a posição quando o preço de fechamento cruza abaixo do SMA 200 menos ATR 14. A estratégia usa o SMA 200 para determinar a direção da tendência principal e define a linha de stop loss dinamicamente com o ATR 14, realizando uma stop loss dinâmica.

Análise das vantagens

Esta estratégia combina as vantagens de ambos os indicadores SMA e ATR. O SMA 200 filtra o ruído do mercado e bloqueia na direção da tendência primária. O ATR 14 define a linha de stop loss com base na volatilidade das últimas duas semanas, realizando a função de stop loss de trailing dinâmico. Isso alcança lucratividade sustentada dentro da tendência, ao mesmo tempo em que também controla as reduções efetivamente. As vantagens gerais são:

  1. Acompanhar as tendências e controlar os riscos leva a uma maior relação lucro/perda.

  2. O stop loss dinâmico com ATR reduz o impacto de choques esporádicos do mercado.

  3. Parâmetros simples, apenas dois parâmetros equilibram riscos e retornos, evitando excesso de adaptação.

Análise de riscos

Alguns riscos desta estratégia devem ser tratados:

  1. Risco de inversão de tendência: a própria estratégia não pode identificar a inversão de tendência, o que pode levar a perdas enormes se aparecer uma inversão súbita da tendência.

  2. Risco de atraso da SMA A SMA tem algum efeito de atraso que não pode refletir a mudança de tendência instantaneamente.

  3. Risco de parâmetros ATR: configuração inadequada dos parâmetros ATR pode influenciar o desempenho da estratégia.

Soluções:

  1. Adicionar outros indicadores para determinar a inversão da tendência, por exemplo, MACD.
  2. Teste diferentes combinações de parâmetros para encontrar o equilíbrio ideal.

Orientações de otimização

Esta estratégia pode ser melhorada a partir dos seguintes aspectos:

  1. Teste diferentes combinações de parâmetros SMA e ATR para encontrar o ideal.

  2. Adicionar mais indicadores técnicos para avaliar a reversão, por exemplo, MACD.

  3. Otimizar o mecanismo de stop loss com stop loss de trail, stop loss em movimento, etc.

  4. Combine fatores fundamentais para evitar comprar ações com fatores fundamentais fracos.

Conclusão

Esta estratégia integra métodos de rastreamento de tendências e gestão de risco dinâmico para otimizar o stop loss e tirar lucro durante longos períodos de detenção. Possui alta relação lucro/perda, drawdowns controláveis e perfil de risco/retorno equilibrado. Mas também tem alguns riscos de inversão de tendência e dificuldade na otimização de parâmetros.


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

//@version=5
strategy("SMA+ATR Strategie", overlay=true)

// Benutzer-Inputs für SMA, ATR und die Anzeigeoption
smaLength = input(200, title="SMA Länge")
atrLength = input(14, title="ATR Länge")
showSMAandATR = input(true, title="Zeige SMA und ATR-Bänder")

// Berechnung von SMA und ATR
sma = ta.sma(close, smaLength)
atr = ta.atr(atrLength)

// Kauf- und Verkaufslogik basierend auf SMA und ATR
buyCondition = close > sma + atr
sellCondition = close < sma - atr

// Variable zum Speichern des Eintrittspreises
var float entryPrice = na

// Kauf- und Verkaufssignale
if (buyCondition)
    strategy.entry("Buy", strategy.long)
    entryPrice := close // Speichere den Eintrittspreis

if (sellCondition)
    // Nur wenn ein Kauf stattgefunden hat
    if not na(entryPrice)
        // Berechne die Performance seit dem Kaufsignal
        performanceSinceBuy = ((close - entryPrice) / entryPrice) * 100
        // Anzeigen der Performance
        // Wähle die Box-Farbe basierend auf dem Vorzeichen der Performance
        plColor = performanceSinceBuy >= 0 ? color.green : color.red
        // Anzeigen der Performance in der entsprechenden Farbe
        plBox = "P/L: " + str.tostring(performanceSinceBuy, "#.##") + "%"
        label.new(bar_index, high, text=plBox, color=plColor, textcolor=color.white, style=label.style_label_center, yloc=yloc.price)
        
    // Schließe den Trade und setze den Eintrittspreis zurück
    strategy.close("Buy")
    entryPrice := na

// Optionale Anzeige von SMA und ATR-Band
plot(showSMAandATR ? sma : na, color=color.blue, title="SMA 200")
plot(showSMAandATR ? sma + atr : na, color=color.green, title="SMA 200 + ATR")
plot(showSMAandATR ? sma - atr : na, color=color.red, title="SMA 200 - ATR")

Mais.