Estrategia de seguimiento de tendencias con bandas de Bollinger adaptativas y sistema de gestión de riesgos multicapa

BB EMA SL TP SMA
Fecha de creación: 2025-02-10 15:14:57 Última modificación: 2025-02-10 15:14:57
Copiar: 3 Número de Visitas: 446
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias con bandas de Bollinger adaptativas y sistema de gestión de riesgos multicapa

Descripción general

La estrategia es un sistema de seguimiento de tendencias combinado con el indicador de la banda de Brin y la EMA para optimizar el rendimiento de las operaciones a través de un mecanismo de control de riesgos multicapa. El núcleo de la estrategia es capturar las tendencias del mercado utilizando la forma de reversión de ruptura de la banda de Brin en la vía descendente, mientras que se combina con el filtro de tendencias de la EMA para mejorar la precisión de las operaciones. El sistema también contiene un sistema completo de gestión de riesgos, que incluye el seguimiento de los objetivos de stop loss, stop loss fijo, profit y un mecanismo de liquidación basado en el tiempo.

Principio de estrategia

La lógica de negociación de la estrategia se basa en los siguientes elementos centrales:

  1. Utilizando la banda de Brin de diferencia estándar (STDDEV) de 1.5 y un ciclo de 14 como su principal indicador de señales de negociación
  2. Cuando el precio de cierre de una línea K actual se desvía y la línea K actual se invierte, se activa la señal de brecha
  3. Cuando el precio de cierre de una línea K actual se desvía y la línea K actual se fortalece, se activa una señal de multiplicación
  4. Se puede añadir selectivamente un EMA de 80 ciclos como un filtro de tendencia y abrir una posición solo si la tendencia es consistente
  5. Activar el trazado de stop loss cuando el precio atraviesa la línea media de la banda de Brin
  6. Se puede establecer un límite fijo de pérdidas y ganancias
  7. Soporta el mecanismo de liquidación automática basado en el número de líneas K

Ventajas estratégicas

  1. Combinando las características de seguimiento de tendencias y inversiones de operaciones, permite un desempeño estable en diferentes entornos de mercado
  2. Un sistema de control de riesgos en varios niveles ofrece un programa de gestión de fondos completo
  3. La configuración de parámetros flexible permite que la estrategia se adapte a diferentes condiciones del mercado
  4. El filtro de la EMA reduce el riesgo de brechas falsas
  5. El mecanismo de seguimiento de las pérdidas es eficaz para bloquear las ganancias
  6. El mecanismo de liquidación de la dimensión temporal evita el riesgo de una cárcel prolongada

Riesgo estratégico

  1. En un mercado volátil pueden producirse frecuentes señales de ruptura falsas
  2. La cantidad fija de la pérdida puede no ser adecuada para todas las condiciones del mercado
  3. El filtrado de las EMA puede hacer que se pierdan oportunidades de negociación importantes
  4. El seguimiento de las pérdidas puede provocar una liquidación prematura en mercados altamente volátiles
  5. La optimización de parámetros puede provocar un sobreajuste de los datos históricos

Dirección de optimización de la estrategia

  1. Introducción de un ciclo adaptativo de la banda de Bryn que se ajuste dinámicamente a las fluctuaciones del mercado
  2. Desarrollo de un sistema de detención de pérdidas dinámico basado en la gestión de fondos
  3. Aumentar el análisis de volumen de transacciones para confirmar la efectividad de las brechas
  4. Sistemas de optimización de parámetros para lograr inteligencia
  5. Agrega un módulo de reconocimiento de entornos de mercado para usar diferentes configuraciones de parámetros en diferentes condiciones de mercado

Resumir

Se trata de un sistema de seguimiento de tendencias bien diseñado, que proporciona una señal de negociación confiable a través de la combinación de la banda de Brin y la EMA, y asegura la seguridad de las operaciones a través de múltiples niveles de control de riesgo. La estrategia es altamente configurable y puede adaptarse a diferentes estilos de negociación y entornos de mercado.

Código Fuente de la Estrategia
/*backtest
start: 2025-01-10 00:00:00
end: 2025-02-08 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("AI Bollinger Bands Strategy with SL, TP, and Bars Till Close", overlay=true)

// Input parameters
bb_length           = input.int(14, title="Bollinger Bands Length", minval=1)
bb_stddev           = input.float(1.5, title="Bollinger Bands Standard Deviation", minval=0.1)
use_ema             = input.bool(true, title="Use EMA Filter")
ema_length          = input.int(80, title="EMA Length", minval=1)
use_trailing_stop   = input.bool(true, title="Use Trailing Stop")
use_sl              = input.bool(true, title="Use Stop Loss")
use_tp              = input.bool(false, title="Use Take Profit")
sl_dollars          = input.float(300.0, title="Stop Loss (\$)", minval=0.0)
tp_dollars          = input.float(1000.0, title="Take Profit (\$)", minval=0.0)
use_bars_till_close = input.bool(true, title="Use Bars Till Close")
bars_till_close     = input.int(10, title="Bars Till Close", minval=1)
// New input to toggle indicator plotting
plot_indicators     = input.bool(true, title="Plot Bollinger Bands and EMA on Chart")

// Calculate Bollinger Bands and EMA
basis      = ta.sma(close, bb_length)
upper_band = basis + bb_stddev * ta.stdev(close, bb_length)
lower_band = basis - bb_stddev * ta.stdev(close, bb_length)
ema        = ta.ema(close, ema_length)

// Plot Bollinger Bands and EMA conditionally
plot(plot_indicators  ? basis : na, color=color.blue, linewidth=2, title="Basis (SMA)")
plot(plot_indicators ? upper_band : na, color=color.red, linewidth=2, title="Upper Band")
plot(plot_indicators  ? lower_band : na, color=color.green, linewidth=2, title="Lower Band")
plot(plot_indicators   ? ema   : na, color=color.orange, linewidth=2, title="EMA")

// EMA conditions
ema_long_condition  = ema > ema[1]
ema_short_condition = ema < ema[1]

// Entry conditions
sell_condition = close[1] > upper_band[1] and close[1] > open[1] and close < open
if sell_condition and (not use_ema or ema_short_condition)
    strategy.entry("Sell", strategy.short)

buy_condition = close[1] < lower_band[1] and close > open
if buy_condition and (not use_ema or ema_long_condition)
    strategy.entry("Buy", strategy.long)

// Trailing stop logic
if use_trailing_stop
    if strategy.position_size > 0 and close >= basis
        strategy.exit("Trailing Stop Long", from_entry="Buy", stop=low)
    if strategy.position_size < 0 and close <= basis
        strategy.exit("Trailing Stop Short", from_entry="Sell", stop=high)

// Stop Loss and Take Profit logic
if use_sl or use_tp
    if strategy.position_size > 0
        long_entry = strategy.position_avg_price
        long_sl    = long_entry - sl_dollars
        long_tp    = long_entry + tp_dollars
        if use_sl and close <= long_sl
            strategy.close("Buy", comment="Long SL Hit")
        if use_tp and close >= long_tp
            strategy.close("Buy", comment="Long TP Hit")
    if strategy.position_size < 0
        short_entry = strategy.position_avg_price
        short_sl    = short_entry + sl_dollars
        short_tp    = short_entry - tp_dollars
        if use_sl and close >= short_sl
            strategy.close("Sell", comment="Short SL Hit")
        if use_tp and close <= short_tp
            strategy.close("Sell", comment="Short TP Hit")

// Bars Till Close logic
var int bars_since_entry = na
if strategy.position_size != 0
    bars_since_entry := na(bars_since_entry) ? 0 : bars_since_entry + 1
else
    bars_since_entry := na

if use_bars_till_close and not na(bars_since_entry) and bars_since_entry >= bars_till_close
    strategy.close("Buy", comment="Bars Till Close Hit")
    strategy.close("Sell", comment="Bars Till Close Hit")

// Plot buy/sell signals
plotshape(sell_condition and (not use_ema or ema_short_condition), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")
plotshape(buy_condition and (not use_ema or ema_long_condition), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")