Estrategia de stop loss de seguimiento dinámico inteligente de múltiples niveles basada en bandas de Bollinger y ATR

BB ATR MA SMA EMA SMMA WMA VWMA SD
Fecha de creación: 2024-12-11 14:52:24 Última modificación: 2024-12-11 14:52:24
Copiar: 2 Número de Visitas: 88
1
Seguir
1166
Seguidores

Estrategia de stop loss de seguimiento dinámico inteligente de múltiples niveles basada en bandas de Bollinger y ATR

Descripción general

La estrategia es un sistema de negociación inteligente basado en el indicador de la banda de Brin y el ATR, combinado con un mecanismo de stop-loss de varios niveles. La estrategia se ejecuta principalmente mediante la identificación de señales de reversión cerca de la banda de Brin, y administra el riesgo utilizando un método de stop-loss de seguimiento dinámico. El sistema está diseñado para alcanzar un objetivo de ganancia del 20% y un punto de parada del 12%, al tiempo que realiza un stop-loss de seguimiento dinámico en combinación con el indicador de ATR, lo que permite dar suficiente espacio a la tendencia mientras protege las ganancias.

Principio de estrategia

La lógica central de la estrategia incluye las siguientes partes clave:

  1. Condiciones de ingreso: Se requiere que el aro rojo toque la banda de Brin y que aparezca el aro verde después de la baja, una forma que generalmente indica una posible señal de reversión.
  2. Opción de promedio móvil: soporta varios tipos de promedio móvil (SMA, EMA, SMMA, WMA, VWMA), usa 20 ciclos SMA por defecto.
  3. Parámetros de la banda de Brin: Utiliza 1.5 veces la diferencia estándar como ancho de banda, una configuración más conservadora que el tradicional 2 veces la diferencia estándar.
  4. El mecanismo de suspensión: Establecer un objetivo de ganancias iniciales del 20%.
  5. Mecanismo de detención de pérdidas: establezca un límite de pérdidas fijo del 12% para proteger los fondos.
  6. La pérdida de seguimiento dinámico:
    • Activar el ATR de seguimiento de stop loss cuando el precio alcance el nivel de ganancias objetivo
    • El ATR se detiene en el seguimiento dinámico después de tocar la cinta de Brin
    • Ajuste dinámico de seguimiento de la distancia de parada con ATR multiplicado

Ventajas estratégicas

  1. Control de riesgos en varios niveles:
    • Capital fijo para la protección del nivel de pérdida fija
    • Dinámica de seguimiento de pérdidas para bloquear ganancias
    • El deterioro dinámico provocado por la cinta de Brin en la vía proporciona protección adicional
  2. La opción de media móvil flexible permite que las estrategias se adapten a diferentes entornos de mercado
  3. El stop tracking dinámico combinado con el indicador ATR se puede ajustar automáticamente según la volatilidad del mercado para evitar salidas prematuras
  4. Las señales de entrada se combinan con la morfología de los precios y los indicadores técnicos para mejorar la fiabilidad de la señal
  5. Apoyo a la gestión de posiciones y configuración de costos de transacción, más cerca del entorno de transacción real

Riesgo estratégico

  1. Los mercados rápidos y convulsivos pueden provocar transacciones frecuentes y aumentar los costos de las transacciones.
  2. El Stop Loss fijo del 12% puede ser demasiado pequeño en algunos mercados altamente volátiles
  3. Las señales de las bandas de Bryn pueden generar falsas señales en mercados de tendencia
  4. El deterioro de la trazabilidad ATR puede causar una mayor retirada en caso de una gran volatilidad Medidas de mitigación:
  • Se recomienda su uso en períodos de tiempo más largos (de 30 minutos a 1 hora)
  • Se puede ajustar la proporción de pérdidas según las características de cada variedad
  • Considere agregar filtros de tendencia y reducir las señales falsas
  • Ajuste dinámico del ATR para adaptarse a las diferentes condiciones del mercado

Dirección de optimización de la estrategia

  1. Optimización para el ingreso:
  • Añadir mecanismo de confirmación del volumen de transacciones
  • Agrega una señal de filtro de la intensidad de la tendencia
  • Considerar la inclusión de indicadores de movilidad para el juicio auxiliar
  1. Optimización de pérdidas:
  • Cambiar el stop fijo por el stop dinámico basado en el ATR
  • Desarrollo de algoritmos de parada de pérdidas adaptativos
  • Ajuste de la distancia de pérdida en función de la fluctuación de la tasa
  1. Optimización de la media móvil:
  • Prueba de diferentes combinaciones de ciclos
  • El estudio del ciclo de adaptación
  • Considere usar el comportamiento del precio en lugar de la media móvil
  1. Optimización de la gestión de posiciones:
  • Desarrollo de un sistema de gestión de posiciones basado en la volatilidad
  • Implementar un mecanismo para construir y reducir posiciones en lotes
  • Incorporar el control de las aberturas de riesgo

Resumir

La estrategia construye un sistema de negociación multicapa a través de la banda de Brin y el indicador ATR, y utiliza un método de gestión dinámica en los aspectos de entrada, parada de pérdidas y cierre de ganancias. La ventaja de la estrategia reside en su sistema de control de riesgos completo y su capacidad de adaptación a la fluctuación del mercado.

Código Fuente de la Estrategia
/*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("Demo GPT - Bollinger Bands Strategy with Tightened Trailing Stops", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

// Input settings
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = 1.5 // Standard deviation multiplier set to 1.5
offset = input.int(0, "Offset", minval=-500, maxval=500)
atrMultiplier = input.float(1.0, title="ATR Multiplier for Trailing Stop", minval=0.1) // ATR multiplier for trailing stop

// Time range filters
start_date = input(timestamp("2018-01-01 00:00"), title="Start Date")
end_date = input(timestamp("2069-12-31 23:59"), title="End Date")
in_date_range = true

// Moving average function
ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Calculate Bollinger Bands
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// ATR Calculation
atr = ta.atr(length) // Use ATR for trailing stop adjustments

// Plotting
plot(basis, "Basis", color=#2962FF, offset=offset)
p1 = plot(upper, "Upper", color=#F23645, offset=offset)
p2 = plot(lower, "Lower", color=#089981, offset=offset)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))

// Candle color detection
isGreen = close > open
isRed = close < open

// Flags for entry and exit conditions
var bool redTouchedLower = false
var float targetPrice = na
var float stopLossPrice = na
var float trailingStopPrice = na

if in_date_range
    // Entry Logic: First green candle after a red candle touches the lower band
    if close < lower and isRed
        redTouchedLower := true
    if redTouchedLower and isGreen
        strategy.entry("Long", strategy.long)
        targetPrice := close * 1.2       // Set the target price to 20% above the entry price
        stopLossPrice := close * 0.88   // Set the stop loss to 12% below the entry price
        trailingStopPrice := na         // Reset trailing stop on entry
        redTouchedLower := false

    // Exit Logic: Trailing stop after 20% price increase
    if strategy.position_size > 0 and not na(targetPrice) and close >= targetPrice
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop after 20% increase
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop After 20% Increase")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Stop Loss: Exit if the price drops 12% below the entry price
    if strategy.position_size > 0 and not na(stopLossPrice) and close <= stopLossPrice
        strategy.close("Long", comment="Stop Loss Triggered")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Trailing Stop: Activate after touching the upper band
    if strategy.position_size > 0 and close >= upper and isGreen
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop Triggered")
        trailingStopPrice := na // Reset trailing stop
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price