Estrategia de control de riesgo dinámico con patrón envolvente mejorado de supertendencia

ATR SL TP CANDLE supertrend ENGULFING
Fecha de creación: 2025-02-20 15:32:32 Última modificación: 2025-02-20 15:32:32
Copiar: 6 Número de Visitas: 319
2
Seguir
319
Seguidores

Estrategia de control de riesgo dinámico con patrón envolvente mejorado de supertendencia Estrategia de control de riesgo dinámico con patrón envolvente mejorado de supertendencia

Descripción general

Se trata de una estrategia de negociación avanzada que combina el indicador Supertrend y la forma de absorción. La estrategia permite una selección precisa de señales de negociación mediante la identificación de patrones de gráficos de formas de absorción en el mercado y la confirmación de la dirección de la tendencia en combinación con el indicador Supertrend. La estrategia también integra la configuración dinámica de stop loss y gain gain para controlar eficazmente el riesgo al tiempo que garantiza la ganancia.

Principio de estrategia

La estrategia se basa principalmente en los siguientes principios centrales:

  1. El indicador de Supertrend se calcula utilizando el ATR (Average True Rate) para determinar la tendencia general del mercado.
  2. Se filtran las formas de absorción efectivas estableciendo el umbral de aburrimiento (Boring Candle Threshold) y el umbral de absorción (Engulfing Candle Threshold).
  3. Las posiciones se abren cuando la dirección de la tendencia de Supertrend coincide con la dirección de la forma de absorción.
  4. La posición de ventaja y pérdida se establece de forma dinámica y se calcula en proporción al precio de apertura.
  5. Utiliza la estrategia de gestión de posiciones para asegurar que solo se tenga una dirección de negociación a la vez.

Ventajas estratégicas

  1. El control de la calidad de la señal es estricto, y la precisión es mejorada mediante la doble confirmación ((tendencia + forma)).
  2. Introducción de la noción de borracho y devorador de umbral para filtrar las falsas señales.
  3. El cálculo dinámico de Supertrend basado en ATR hace que la estrategia tenga una buena adaptabilidad al mercado.
  4. Mecanismos de gestión de pérdidas y ganancias perfectos para controlar el riesgo y bloquear los beneficios.
  5. La visualización es perfecta, las señales de negociación, los puntos de parada y los objetivos de ganancias están claramente visibles.

Riesgo estratégico

  1. Las señales falsas de ruptura pueden ser frecuentes en mercados convulsionados.
  2. La configuración fija de stop loss y profit puede no ser adecuada para todos los entornos de mercado.
  3. El reverso de la tendencia podría dar lugar a un retroceso mayor.
  4. La configuración de parámetros es sensible, y los parámetros incorrectos pueden causar un mal desempeño de la estrategia.
  5. En un mercado con poca liquidez, puede haber riesgo de deslizamiento.

Dirección de optimización de la estrategia

  1. Se puede introducir un indicador de volumen de tráfico como señal de confirmación.
  2. Considerar la posibilidad de incorporar un mecanismo de regulación de multiplicadores ATR dinámico.
  3. La proporción de pérdidas y ganancias se ajusta dinámicamente en función de la volatilidad del mercado.
  4. Aumentar el filtro de tiempo para evitar el comercio en períodos de tiempo inadecuados.
  5. Considere la posibilidad de agregar un filtro de intensidad de tendencia para mejorar la calidad de las transacciones.

Resumir

Se trata de una estrategia de diseño riguroso, lógica clara, mediante la combinación de indicadores técnicos y el análisis de la forma, se logra un mejor control de la calidad de la señal. El mecanismo de gestión de riesgos de la estrategia es perfectamente, el efecto de visualización es excelente, es adecuado para realizar pruebas en el campo y la optimización. Se recomienda a los comerciantes en la aplicación práctica a prestar atención a la optimización de los parámetros y la elección del entorno del mercado.

Código Fuente de la Estrategia
/*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)