Estratégia de controle de risco dinâmico do padrão de engolfo aprimorado da supertrend

ATR SL TP CANDLE supertrend ENGULFING
Data de criação: 2025-02-20 15:32:32 última modificação: 2025-02-20 15:32:32
cópia: 6 Cliques: 319
2
focar em
319
Seguidores

Estratégia de controle de risco dinâmico do padrão de engolfo aprimorado da supertrend Estratégia de controle de risco dinâmico do padrão de engolfo aprimorado da supertrend

Visão geral

Esta é uma estratégia de negociação avançada que combina o indicador Supertrend com a forma de absorção. A estratégia permite uma seleção precisa de sinais de negociação através da identificação de padrões de mapeamento de formas de absorção no mercado e da confirmação da direção da tendência em combinação com o indicador Supertrend. A estratégia também integra configurações dinâmicas de parada e ganho para controlar eficazmente o risco e garantir o lucro.

Princípio da estratégia

A estratégia baseia-se nos seguintes princípios:

  1. O indicador de Supertrend é calculado usando o ATR (Average True Ratio) para determinar a tendência geral do mercado.
  2. Filtre os modos de absorção efetivos, definindo o Boring Candle Threshold e o Engulfing Candle Threshold.
  3. A tendência de Supertrend só é aberta quando a direção da tendência coincide com a direção da forma de engolir.
  4. A configuração do ponto de parada e ganho dinâmico é calculada proporcionalmente com base no preço de abertura.
  5. Usar estratégias de gerenciamento de posições para garantir que apenas uma direção de negociação seja mantida ao mesmo tempo.

Vantagens estratégicas

  1. O controle de qualidade do sinal é rigoroso, aumentando a precisão com a dupla confirmação ((tendência + forma)).
  2. A introdução do conceito de boredom e absorção de valores-limite para filtrar os falsos sinais.
  3. A dinâmica Supertrend computação baseada no ATR, torna a estratégia de boa adaptabilidade ao mercado.
  4. Uma boa gestão de stop loss e profit management, tanto para controlar o risco como para bloquear os lucros.
  5. A visualização é perfeita, os sinais de negociação, os pontos de parada e os objetivos de lucro são claramente visíveis.

Risco estratégico

  1. A tendência é de que os falsos sinais de ruptura ocorram com frequência em mercados em turbulência.
  2. A configuração fixa de stop loss e profit pode não ser adequada para todos os cenários de mercado.
  3. A tendência pode virar para uma retracção maior.
  4. A configuração de parâmetros é sensível e os parâmetros inadequados podem causar um mau desempenho da estratégia.
  5. Em mercados com pouca liquidez, pode haver um risco de deslizamento.

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

  1. Pode ser introduzido um indicador de volume de tráfego como sinal de confirmação.
  2. Considerar a inclusão de um mecanismo de regulação do ATR multiplicado por dinâmico.
  3. A correção de stop loss e profit ratio é baseada na volatilidade do mercado.
  4. Aumentar o filtro de tempo para evitar transações em períodos de tempo inadequados.
  5. Considere adicionar filtros de intensidade de tendência para melhorar a qualidade das transações.

Resumir

Esta é uma estratégia de design rigoroso, lógica clara, através da combinação de indicadores técnicos e análise de forma, para obter um melhor controle de qualidade do sinal. A estratégia do mecanismo de gestão de risco de aperfeiçoamento, excelente visualização, adequado para testes e otimização em campo.

Código-fonte da estratégia
/*backtest
start: 2024-02-21 00:00:00
end: 2024-06-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy('Strategy Engulfing', overlay=true)

// Inputs
Periods = input(title='ATR Period', defval=5)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=1.0)
highlighting = input(title='Highlighter On/Off?', defval=true)
boringThreshold = input.int(5, title='Boring Candle Threshold (%)', minval=1, maxval=100, step=1)
engulfingThreshold = input.int(50, title='Engulfing Candle Threshold (%)', minval=1, maxval=100, step=1)
OpenPosisi = input.int(2000, title='OpenPosisi (Pips)', minval=-25000)
stoploss = input.int(10000, title='Stop Loss (Pips)', minval=-25000)
takeprofit = input.int(20000, title='Take Profit (Pips)', minval=-25000)

// ATR Calculation
atr = ta.atr(Periods)

// Supertrend Calculation
up = src - Multiplier * atr
up := close[1] > nz(up[1]) ? math.max(up, nz(up[1])) : up
dn = src + Multiplier * atr
dn := close[1] < nz(dn[1]) ? math.min(dn, nz(dn[1])) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn[1] ? 1 : trend == 1 and close < up[1] ? -1 : trend

// Plotting Supertrend
plot(trend == 1 ? up : na, color=color.new(color.green, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Up')
plot(trend == -1 ? dn : na, color=color.new(color.red, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Down')

// Engulfing Candlestick
isBoringCandle = math.abs(open[1] - close[1]) <= (high[1] - low[1]) * boringThreshold / 100
isEngulfingCandle = math.abs(open - close) * 100 / math.abs(high - low) <= engulfingThreshold

bullEngulfing = strategy.opentrades == 0 and trend == 1 and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = strategy.opentrades == 0 and trend == -1 and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Calculate Limit Price
limitbull = bullEngulfing ? close + OpenPosisi * syminfo.mintick : na
limitbear = bearEngulfing ? close - OpenPosisi * syminfo.mintick : na

// Calculate Stop Loss
bullishStopLoss = bullEngulfing ? limitbull - stoploss * syminfo.mintick : na
bearishStopLoss = bearEngulfing ? limitbear + stoploss * syminfo.mintick : na

// Calculate Take Profit
bullishTakeProfit = bullEngulfing ? limitbull + takeprofit * syminfo.mintick : na
bearishTakeProfit = bearEngulfing ? limitbear - takeprofit * syminfo.mintick : na


// Alerts for Engulfing Candles (Trigger Immediately)
if bullEngulfing
    alert('Bullish Engulfing Candle Formed!')

if bearEngulfing
    alert('Bearish Engulfing Candle Formed!')

// Plot shapes
plotshape(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.new(color.green, 0))
plotshape(bearEngulfing, style=shape.triangledown, location=location.belowbar, color=color.new(color.red, 0))


plot(limitbull, title='Bullish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(limitbear, title='Bearish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(bullishStopLoss, title='Bullish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bearishStopLoss, title='Bearish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bullishTakeProfit, title='Bullish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)
plot(bearishTakeProfit, title='Bearish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)

// Label Stop Loss and Take Profit
label.new(bullEngulfing ? bar_index : na, bullishStopLoss, text='SL: ' + str.tostring(bullishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_up, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishStopLoss, text='SL: ' + str.tostring(bearishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bullEngulfing ? bar_index : na, bullishTakeProfit, text='TP: ' + str.tostring(bullishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishTakeProfit, text='TP: ' + str.tostring(bearishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_up, size=size.tiny)


// Strategy execution
if bullEngulfing
    strategy.entry('BUY', strategy.long, stop=limitbull)
    strategy.exit('TP/SL', from_entry='BUY', limit=bullishTakeProfit, stop=bullishStopLoss)

if bearEngulfing
    strategy.entry('SELL', strategy.short, stop=limitbear)
    strategy.exit('TP/SL', from_entry='SELL', limit=bearishTakeProfit, stop=bearishStopLoss)