Estratégia de monitoramento de tendências multiindicadores e otimização de lucros

SAR ATR MACD SMA DMI ADX
Data de criação: 2024-12-11 17:22:57 última modificação: 2024-12-11 17:22:57
cópia: 0 Cliques: 351
1
focar em
1617
Seguidores

Estratégia de monitoramento de tendências multiindicadores e otimização de lucros

Visão geral

A estratégia é um sistema de negociação de acompanhamento de tendências que combina vários indicadores técnicos. Utiliza principalmente o indicador de desvio de linha paralela (SAR), a média móvel (SMA) e o indicador de dinâmica de direção (DMI) para determinar a tendência do mercado e o momento de entrada e otimizar a saída por meio de paradas percentuais e retrocesso MACD.

Princípio da estratégia

A estratégia usa um mecanismo de filtragem em várias camadas para confirmar os sinais de transação:

  1. Captura de sinais iniciais de negociação através de cruzamento de indicadores SAR
  2. Usando o SMA de 50 ciclos para determinar a direção da tendência geral
  3. Aplicação do indicador DMI para confirmar a força e a direção da tendência
  4. Os critérios de entrada devem ser preenchidos ao mesmo tempo: preço acima do SAR, preço acima do SMA e DMI mostrando uma tendência múltipla
  5. A saída do mercado com um mecanismo duplo: o lucro-alvo de 3% ou o sinal de morte MACD
  6. Indicador ATR para referência à volatilidade do mercado

Vantagens estratégicas

  1. Verificação cruzada de múltiplos indicadores tecnológicos para reduzir sinais falsos
  2. Combinação de rastreamento de tendências e indicadores de dinâmica para aumentar a taxa de sucesso das transações
  3. Estratégia de paralisação de porcentagem fixa para garantir um lucro estável
  4. MACD se afasta do mecanismo de saída para evitar a reversão da tendência
  5. Os parâmetros da estratégia podem ser ajustados de forma flexível de acordo com as diferentes características do mercado
  6. ATR para monitorar a volatilidade e fornecer informações sobre o estado do mercado

Risco estratégico

  1. Vários indicadores podem causar atraso no sinal
  2. A parada de percentual fixa pode sair cedo de uma forte tendência
  3. A ausência de um mecanismo de stop loss aumenta a abertura de risco
  4. Os mercados horizontais podem gerar muitos sinais falsos
  5. Indicadores de DMI podem gerar sinais enganosos em mercados em turbulência

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

  1. Introdução de mecanismos de stop-loss adaptativos, como o stop-loss dinâmico baseado em ATR
  2. Desenvolvimento de filtros de taxa de flutuação para ajustar o tamanho das posições em períodos de alta volatilidade
  3. Optimizar os parâmetros do MACD para melhorar a precisão do julgamento da reversão de tendência
  4. Adicionar mecanismo de confirmação de volume para melhorar a confiabilidade do sinal
  5. Desenvolver um mecanismo de stop-loss dinâmico para ajustar os lucros-alvo de acordo com as flutuações do mercado

Resumir

A estratégia, através da colaboração sincronizada de múltiplos indicadores técnicos, constrói um sistema de negociação de acompanhamento de tendências relativamente completo. Sua vantagem reside na confiabilidade da confirmação de sinais e na flexibilidade do controle de risco. Embora haja algum risco de atraso, o desempenho geral da estratégia tem um bom valor de aplicação, através da otimização de parâmetros e da inclusão de mecanismos de gerenciamento dinâmico.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Swing Trading Strategy with DMI", overlay=true)

// Define parameters
sarStart = input.float(0.02, title="SAR Start")
sarIncrement = input.float(0.02, title="SAR Increment")
sarMax = input.float(0.2, title="SAR Max")
atrLength = input.int(10, title="ATR Length")
macdShort = input.int(12, title="MACD Short Length")
macdLong = input.int(26, title="MACD Long Length")
macdSignal = input.int(9, title="MACD Signal Length")
smaLength = input.int(50, title="SMA Length")
dmiLength = input.int(14, title="DMI Length")
adxSmoothing = input.int(14, title="ADX Smoothing") // Smoothing period for ADX
targetProfitPercentage = input.float(3.0, title="Target Profit Percentage")

// Calculate SAR
sar = ta.sar(sarStart, sarIncrement, sarMax)

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate MACD
[macdLine, macdSignalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)

// Calculate SMA
sma = ta.sma(close, smaLength)
bullishTrend = close > sma

// Calculate DMI
[plusDI, minusDI, adx] = ta.dmi(dmiLength, adxSmoothing) // Specify ADX smoothing period

// Determine if DMI is bullish
dmiBullish = plusDI > minusDI

// Define buy signal
buySignal = ta.crossover(close, sar) and bullishTrend and dmiBullish

// Track buy price and position state
var float buyPrice = na
var bool inPosition = false

// Enter position
if (buySignal and not inPosition)
    buyPrice := close
    inPosition := true
    strategy.entry("Buy", strategy.long)

// Define target price (3% above the buy price)
targetPrice = na(buyPrice) ? na : buyPrice * (1 + targetProfitPercentage / 100)

// Define MACD sell signal
macdSellSignal = ta.crossunder(macdLine, macdSignalLine)

// Define sell signal
sellSignal = inPosition and (close >= targetPrice or macdSellSignal)

// Exit position
if (sellSignal)
    inPosition := false
    strategy.exit("Sell", "Buy", limit=targetPrice)

// Plot SAR on the chart
plot(sar, color=color.red, style=plot.style_cross, linewidth=2)

// Plot SMA (optional, for visualizing the trend)
plot(sma, color=color.blue, title="SMA")

// Plot DMI +DI and -DI
plot(plusDI, color=color.green, title="+DI")
plot(minusDI, color=color.red, title="-DI")

// Plot buy signal on the chart
//plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")

// Plot sell signal on the chart
//plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Optional: Plot background color for buy and sell signals
bgcolor(buySignal ? color.new(color.green, 90) : na, title="Buy Signal Background")
bgcolor(sellSignal ? color.new(color.red, 90) : na, title="Sell Signal Background")