Estrategia de trading con regresión de bandas de Bollinger de múltiples niveles

BB SMA stdev TP SL
Fecha de creación: 2025-02-21 13:06:24 Última modificación: 2025-02-21 13:06:24
Copiar: 1 Número de Visitas: 463
2
Seguir
319
Seguidores

Estrategia de trading con regresión de bandas de Bollinger de múltiples niveles Estrategia de trading con regresión de bandas de Bollinger de múltiples niveles

Descripción general

Se trata de una estrategia de negociación basada en el principio de la regresión a la media de la banda de Brin, que permite obtener ganancias por lotes a través de varios niveles de stop-loss. La estrategia opera cuando el precio se recupera después de la ruptura de la banda de Brin, y establece 5 niveles de stop-loss diferentes para reducir gradualmente la posición.

Principio de estrategia

La estrategia se basa en un indicador de la banda de Brin de 20 ciclos, usando el doble de la diferencia estándar como un intervalo de fluctuación. Cuando el precio se rompe por debajo de la banda y se cierra dentro de la banda, se activa una señal de más; cuando el precio se rompe por encima de la banda y se cierra dentro de la banda, se activa una señal de vacío.

Ventajas estratégicas

  1. La adopción de un mecanismo de suspensión en varios niveles permite obtener más ganancias si la tendencia se mantiene, al tiempo que se asegura que parte de las ganancias se recuperen
  2. Apoyo a la recaudación de posiciones para mejorar la rentabilidad en el momento en que la dirección de la operación es correcta
  3. Utilizando la banda de Brin como soporte dinámico para resistir a las fluctuaciones del mercado
  4. Se puede personalizar el horario de negociación para evitar interferencias en horarios no comerciales
  5. Se ha establecido un mecanismo de suspensión de pérdidas para controlar el riesgo.

Riesgo estratégico

  1. Las señales de brechas falsas pueden ser frecuentes en mercados muy volátiles.
  2. Las tendencias rápidas pueden hacer que se pierda una oportunidad de ganar más.
  3. El mecanismo de acreedores podría causar mayores pérdidas en caso de una reversión del mercado
  4. La falta de liquidez puede impedir la ejecución completa de varias órdenes de suspensión Se recomienda adaptarse a las diferentes condiciones del mercado ajustando los parámetros de la banda de Bryn y el Stop Loss Ratio.

Dirección de optimización de la estrategia

  1. Introducción de indicadores de volumen de tránsito como condición de filtración de la señal para mejorar la fiabilidad de la brecha
  2. Ajuste dinámico de la posición de la parada de pérdidas en función de la volatilidad
  3. Incrementar los indicadores de filtración de tendencias para evitar el comercio contracorriente en una tendencia fuerte
  4. Optimización de la lógica de alza de la posición, estableciendo límites máximos de tenencia de posición
  5. Considere la posibilidad de agregar un bloqueo móvil para proteger mejor los beneficios

Resumir

La estrategia capta la oportunidad de regreso al promedio a través de un indicador de la banda de Brin, y administra el riesgo mediante el uso de múltiples niveles de paradas y paradas dinámicas. La ventaja de la estrategia reside en su mecanismo de control de posición y riesgo flexible, pero se debe tener en cuenta la adaptabilidad al entorno del mercado al usarla. La estabilidad y la rentabilidad de la estrategia se pueden mejorar aún más mediante la adición de indicadores de filtrado adicionales y la optimización de los parámetros de paradas y paradas.

Código Fuente de la Estrategia
/*backtest
start: 2025-02-19 10:00:00
end: 2025-02-20 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/

//@version=5
strategy("Bollinger Band Reentry Strategy", overlay=true)

// Inputs
bbLength = input.int(20, title="Bollinger Band Length")
bbMult = input.float(2.0, title="Bollinger Band Multiplier")
stopLossPerc = input.float(1.0, title="Stop Loss (%)") / 100
tp1Perc = input.float(0.5, title="Take Profit 1 (%)") / 100
tp2Perc = input.float(1.0, title="Take Profit 2 (%)") / 100
tp3Perc = input.float(1.5, title="Take Profit 3 (%)") / 100
tp4Perc = input.float(2.0, title="Take Profit 4 (%)") / 100
tp5Perc = input.float(2.5, title="Take Profit 5 (%)") / 100
allowAddToPosition = input.bool(true, title="Allow Adding to Position")
customSession = input.timeframe("0930-1600", title="Custom Trading Session")

// Calculate Bollinger Bands
basis = ta.sma(close, bbLength)
dev = ta.stdev(close, bbLength)
upperBB = basis + bbMult * dev
lowerBB = basis - bbMult * dev

// Plot Bollinger Bands
plot(upperBB, color=color.red, title="Upper Bollinger Band")
plot(lowerBB, color=color.green, title="Lower Bollinger Band")
plot(basis, color=color.blue, title="Bollinger Band Basis")

// Entry Conditions
longCondition = (ta.crossover(close, lowerBB) or (low < lowerBB and close > lowerBB)) and time(timeframe.period, customSession)
shortCondition = (ta.crossunder(close, upperBB) or (high > upperBB and close < upperBB)) and time(timeframe.period, customSession)

// Execute Trades
if (longCondition)
    strategy.entry("Long", strategy.long, when=allowAddToPosition or strategy.position_size == 0)
if (shortCondition)
    strategy.entry("Short", strategy.short, when=allowAddToPosition or strategy.position_size == 0)

// Take-Profit and Stop-Loss Levels for Long Trades
if (strategy.position_size > 0)
    strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + tp1Perc), qty=strategy.position_size * 0.2) // Take 20% profit
    strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + tp2Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + tp3Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP4", "Long", limit=strategy.position_avg_price * (1 + tp4Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP5", "Long", limit=upperBB, qty=strategy.position_size * 0.2) // Take final 20% at opposite band
    strategy.exit("Stop Loss", "Long", stop=strategy.position_avg_price * (1 - stopLossPerc))

// Take-Profit and Stop-Loss Levels for Short Trades
if (strategy.position_size < 0)
    strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - tp1Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - tp2Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - tp3Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP4", "Short", limit=strategy.position_avg_price * (1 - tp4Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP5", "Short", limit=lowerBB, qty=strategy.position_size * 0.2)
    strategy.exit("Stop Loss", "Short", stop=strategy.position_avg_price * (1 + stopLossPerc))

// Alerts
alertcondition(longCondition, title="Long Signal", message="Price closed inside Bollinger Band from below.")
alertcondition(shortCondition, title="Short Signal", message="Price closed inside Bollinger Band from above.")