Sistema de negociação de acompanhamento de tendências com stop loss dinâmico ATR

ATR EMA ROI TSL
Data de criação: 2025-02-20 13:22:24 última modificação: 2025-02-20 14:53:21
cópia: 2 Cliques: 445
2
focar em
319
Seguidores

Sistema de negociação de acompanhamento de tendências com stop loss dinâmico ATR Sistema de negociação de acompanhamento de tendências com stop loss dinâmico ATR

Visão geral

A estratégia é um sistema de acompanhamento de tendências que segue o stop loss de forma dinâmica, baseado no ATR (Average True Range). Ele combina a linha média EMA como um filtro de tendência e controla a geração de sinais, ajustando os parâmetros de sensibilidade e o ciclo ATR. O sistema suporta não apenas ações de mais, mas também ações de menos, e possui um mecanismo de gerenciamento de lucro perfeito.

Princípio da estratégia

  1. O indicador ATR é usado para calcular a amplitude de flutuação dos preços e determinar a distância de parada de rastreamento com base no coeficiente de sensibilidade definido (Key Value)
  2. Com base na linha média da EMA, para determinar a direção da tendência do mercado, só é permitido abrir uma oferta acima da linha média e uma oferta em aberto abaixo da linha média
  3. Quando o preço atravessa a linha de tração de stop loss e está em consonância com a direção da tendência, um sinal de negociação é acionado
  4. O sistema de gerenciamento de posições de forma a gerar lucros por etapas:
    • Quando o lucro for de 20% a 50%, o stop loss será elevado para o custo-benefício.
    • Quando o lucro é de 50% a 80%, parte do lucro é encerrado e o stop loss é apertado
    • Quando o lucro é de 80% a 100%, a proteção de stop loss é reforçada
    • Quando o lucro é superior a 100%, o lucro total é zero.

Vantagens estratégicas

  1. O stop loss de rastreamento dinâmico permite um bom acompanhamento da tendência, sem sair da corrida prematuramente enquanto protege os lucros.
  2. A filtragem de tendências da EMA reduz o risco de brechas falsas
  3. O mecanismo de dividendos garantiu a realização dos lucros e permitiu que a tendência se desenvolvesse
  4. O apoio a mais negociações binárias de tipo “do-def” para aproveitar as oportunidades de mercado
  5. Parâmetros ajustáveis para diferentes cenários de mercado

Risco estratégico

  1. Perda de lucro em mercados de baixa volatilidade
  2. A reversão inicial da tendência pode gerar uma retracção maior
  3. Configurações de parâmetros inadequadas podem afetar o desempenho da estratégia Sugestões de controle de risco:
  • Recomendado para uso em mercados de tendência
  • Parâmetros cuidadosamente selecionados, que podem ser otimizados através de retrospectiva
  • Configure o limite máximo de retirada
  • Considere aumentar as condições de filtragem do ambiente de mercado

Direção de otimização da estratégia

  1. Aumentar o mecanismo de identificação do cenário de mercado, usando diferentes parâmetros em diferentes condições de mercado
  2. A introdução de indicadores auxiliares como o volume de tráfego aumenta a confiabilidade do sinal
  3. Optimizar o mecanismo de gestão de lucro, ajustando os objetivos de lucro de acordo com a volatilidade
  4. Aumentar o tempo de filtragem para evitar transações em períodos desfavoráveis
  5. Considere a inclusão de filtros de volatilidade para reduzir a frequência de negociação em caso de excesso de volatilidade

Resumir

Trata-se de um sistema de acompanhamento de tendências com uma estrutura completa e uma lógica clara. A combinação de acompanhamento dinâmico do ATR e filtragem de tendências do EMA permite um melhor controle de risco ao mesmo tempo em que se mantém a tendência. O design do mecanismo de lucro intermitente também reflete uma mentalidade de negociação madura.

Código-fonte da estratégia
/*backtest
start: 2024-10-15 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Enhanced UT Bot with Long & Short Trades", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input Parameters
keyvalue = input.float(1.1, title="Key Value (Sensitivity)", step=0.1)
atrperiod = input.int(200, title="ATR Period")
emaPeriod = input.int(50, title="EMA Period")
roi_close = input.float(100, title="Close Trade at ROI (%)", step=1)

// ATR Calculation
src = close
xATR = ta.atr(atrperiod)
nLoss = keyvalue * xATR

// EMA for Trend Filtering
ema = ta.ema(src, emaPeriod)

// Trailing Stop Logic
var float xATRTrailingStop = na
if na(xATRTrailingStop)
    xATRTrailingStop := src - nLoss

if src > nz(xATRTrailingStop[1]) and src[1] > nz(xATRTrailingStop[1])
    xATRTrailingStop := math.max(nz(xATRTrailingStop[1]), src - nLoss)
else if src < nz(xATRTrailingStop[1]) and src[1] < nz(xATRTrailingStop[1])
    xATRTrailingStop := math.min(nz(xATRTrailingStop[1]), src + nLoss)
else
    xATRTrailingStop := src > nz(xATRTrailingStop[1]) ? src - nLoss : src + nLoss

// Buy/Sell Signal with Trend Filter
buySignal = ta.crossover(src, xATRTrailingStop) and src > ema
sellSignal = ta.crossunder(src, xATRTrailingStop) and src < ema

// Strategy Logic: Long Trades
if buySignal and strategy.position_size <= 0
    strategy.entry("Buy", strategy.long)

if sellSignal and strategy.position_size > 0
    strategy.close("Buy")

// Strategy Logic: Short Trades
if sellSignal and strategy.position_size >= 0
    strategy.entry("Sell", strategy.short)

if buySignal and strategy.position_size < 0
    strategy.close("Sell")

// ROI Calculation for Both Long and Short Trades
var float entryPrice = na
var bool isLong = na
if strategy.position_size > 0
    entryPrice := strategy.opentrades.entry_price(0)
    isLong := true
if strategy.position_size < 0
    entryPrice := strategy.opentrades.entry_price(0)
    isLong := false

// Calculate current profit
currentProfit = isLong ? (close - entryPrice) / entryPrice * 100 : (entryPrice - close) / entryPrice * 100

// Enhanced ROI Management
if strategy.position_size > 0 // Long Position
    if currentProfit >= 20 and currentProfit < 50
        stopLevel = entryPrice // Breakeven
        strategy.exit("TSL Breakeven", from_entry="Buy", stop=stopLevel)
    if currentProfit >= 50 and currentProfit < 80
        stopLevel = entryPrice * 1.30 // 30% ROI
        strategy.exit("TSL 30%", from_entry="Buy", stop=stopLevel)
        strategy.close("Partial Profit", qty_percent=50) // Take 50% profit
    if currentProfit >= 80 and currentProfit < roi_close
        stopLevel = entryPrice * 1.60 // 60% ROI
        strategy.exit("TSL 60%", from_entry="Buy", stop=stopLevel)
    if currentProfit >= roi_close
        strategy.close("Full Exit at 100% ROI")

if strategy.position_size < 0 // Short Position
    if currentProfit >= 20 and currentProfit < 50
        stopLevel = entryPrice // Breakeven
        strategy.exit("TSL Breakeven", from_entry="Sell", stop=stopLevel)
    if currentProfit >= 50 and currentProfit < 80
        stopLevel = entryPrice * 0.70 // 30% ROI (Short stop)
        strategy.exit("TSL 30%", from_entry="Sell", stop=stopLevel)
        strategy.close("Partial Profit", qty_percent=50) // Take 50% profit
    if currentProfit >= 80 and currentProfit < roi_close
        stopLevel = entryPrice * 0.40 // 60% ROI (Short stop)
        strategy.exit("TSL 60%", from_entry="Sell", stop=stopLevel)
    if currentProfit >= roi_close
        strategy.close("Full Exit at 100% ROI")

// Plotting
plot(xATRTrailingStop, color=buySignal ? color.green : sellSignal ? color.red : color.gray, title="Trailing Stop")
plot(ema, color=color.blue, title="EMA Trend Filter")
plotshape(buySignal, title="Buy Signal", style=shape.labelup, location=location.belowbar, color=color.green, text="Buy")
plotshape(sellSignal, title="Sell Signal", style=shape.labeldown, location=location.abovebar, color=color.red, text="Sell")