Estrategia de filtrado de señales comerciales con bandas de Bollinger combinadas con múltiples indicadores Woody CCI

BB CCI MA OBV ATR SMA TP SL
Fecha de creación: 2024-12-27 15:32:30 Última modificación: 2024-12-27 15:32:30
Copiar: 0 Número de Visitas: 416
1
Seguir
1617
Seguidores

Estrategia de filtrado de señales comerciales con bandas de Bollinger combinadas con múltiples indicadores Woody CCI

Descripción general

La estrategia es un sistema de trading de múltiples indicadores que combina las bandas de Bollinger, el CCI de Woodies, las medias móviles (MA) y el volumen en equilibrio (OBV). La estrategia utiliza las Bandas de Bollinger para proporcionar un rango de volatilidad del mercado, utiliza el indicador CCI para filtrar las señales comerciales y luego combina el sistema de promedio móvil y la confirmación del volumen comercial para operar cuando la tendencia del mercado es clara. Al mismo tiempo, utilice ATR para establecer dinámicamente las posiciones de take-profit y stop-loss para controlar eficazmente los riesgos.

Principio de estrategia

La lógica central de la estrategia se basa en los siguientes elementos clave:

  1. Utilice dos bandas de Bollinger de desviación estándar (1x y 2x) para construir un canal de fluctuación de precios y proporcionar una referencia para el rango de fluctuación del mercado.
  2. El uso de indicadores CCI de 6 y 14 períodos como filtros de señal requiere que el CCI de los dos períodos se confirme en la misma dirección.
  3. Combine los promedios móviles de 50 y 200 períodos para determinar las tendencias del mercado y generar señales comerciales iniciales cuando los promedios móviles se cruzan.
  4. La tendencia del volumen se confirma mediante el suavizado de 10 períodos del indicador OBV.
  5. Utilice el ATR de 14 períodos para establecer dinámicamente el take-profit y el stop-loss. Para las posiciones largas, el take-profit es 2 veces el ATR y el stop-loss es 1 vez el ATR. Para las posiciones cortas, sucede lo contrario.

Ventajas estratégicas

  1. La validación cruzada de múltiples indicadores reduce en gran medida la probabilidad de señales falsas
  2. La combinación de las bandas de Bollinger y el CCI proporciona un juicio preciso sobre la volatilidad del mercado
  3. El sistema de promedio móvil de largo y corto plazo capta eficazmente la tendencia general.
  4. OBV confirma el soporte de volumen y mejora la confiabilidad de la señal
  5. Configuraciones dinámicas de stop-profit y stop-loss para adaptarse a diferentes entornos de mercado
  6. Las señales comerciales son claras, la ejecución es estándar y es fácil de cuantificar e implementar.

Riesgo estratégico

  1. Múltiples indicadores pueden causar retrasos en la señal y perder el mejor momento de entrada
  2. Los stop loss pueden activarse con frecuencia en mercados volátiles
  3. La optimización de parámetros tiene el riesgo de sobreajuste
  4. El stop loss puede no ser oportuno durante períodos de volatilidad severa Contramedidas:
  • Ajuste dinámicamente los parámetros del indicador según los diferentes ciclos del mercado.
  • Monitoreo en tiempo real del retroceso y control de posición
  • Compruebe periódicamente la validez de los parámetros
  • Establecer un límite máximo de pérdida

Dirección de optimización de la estrategia

  1. Introducir indicadores de volatilidad del mercado para ajustar posiciones durante períodos de alta volatilidad
  2. Agregue un filtro de fuerza de tendencia para evitar operar en mercados volátiles
  3. Optimice la selección del ciclo CCI y mejore la sensibilidad de la señal
  4. Mejorar el mecanismo de stop-profit y stop-loss, por ejemplo, considerando la posibilidad de tomar ganancias en lotes
  5. Se agregó un mecanismo de advertencia de volumen comercial anormal

Resumir

Se trata de un sistema de trading completo basado en una combinación de indicadores técnicos, que mejora la precisión del trading a través de múltiples confirmaciones de señales. La estrategia está razonablemente diseñada, el riesgo está controlado adecuadamente y tiene un buen valor de aplicación práctica. Se recomienda utilizar posiciones conservadoras para realizar pruebas en operaciones reales y optimizar continuamente los parámetros en función de las condiciones del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy(shorttitle="BB Debug + Woodies CCI Filter", title="Debug Buy/Sell Signals with Woodies CCI Filter", overlay=true)

// Input Parameters
length = input.int(20, minval=1, title="BB MA Length")
src = input.source(close, title="BB Source")
mult1 = input.float(1.0, minval=0.001, maxval=50, title="BB Multiplier 1 (Std Dev 1)")
mult2 = input.float(2.0, minval=0.001, maxval=50, title="BB Multiplier 2 (Std Dev 2)")
ma_length = input.int(50, minval=1, title="MA Length")
ma_long_length = input.int(200, minval=1, title="Long MA Length")
obv_smoothing = input.int(10, minval=1, title="OBV Smoothing Length")
atr_length = input.int(14, minval=1, title="ATR Length") // ATR Length for TP/SL

// Bollinger Bands
basis = ta.sma(src, length)
dev1 = mult1 * ta.stdev(src, length)
dev2 = mult2 * ta.stdev(src, length)

upper_1 = basis + dev1
lower_1 = basis - dev1
upper_2 = basis + dev2
lower_2 = basis - dev2

plot(basis, color=color.blue, title="BB MA")
p1 = plot(upper_1, color=color.new(color.green, 80), title="BB Upper 1")
p2 = plot(lower_1, color=color.new(color.green, 80), title="BB Lower 1")
p3 = plot(upper_2, color=color.new(color.red, 80), title="BB Upper 2")
p4 = plot(lower_2, color=color.new(color.red, 80), title="BB Lower 2")

fill(p1, p2, color=color.new(color.green, 90))
fill(p3, p4, color=color.new(color.red, 90))

// Moving Averages
ma_short = ta.sma(close, ma_length)
ma_long = ta.sma(close, ma_long_length)
plot(ma_short, color=color.orange, title="MA Short")
plot(ma_long, color=color.yellow, title="MA Long")

// OBV and Smoothing
obv = ta.cum(ta.change(close) > 0 ? volume : ta.change(close) < 0 ? -volume : 0)
obv_smooth = ta.sma(obv, obv_smoothing)

// Debugging: Buy/Sell Signals
debugBuy = ta.crossover(close, ma_short)
debugSell = ta.crossunder(close, ma_short)

// Woodies CCI
cciTurboLength = 6
cci14Length = 14
cciTurbo = ta.cci(src, cciTurboLength)
cci14 = ta.cci(src, cci14Length)

// Filter: Only allow trades when CCI confirms the signal
cciBuyFilter = cciTurbo > 0 and cci14 > 0
cciSellFilter = cciTurbo < 0 and cci14 < 0

finalBuySignal = debugBuy and cciBuyFilter
finalSellSignal = debugSell and cciSellFilter

// Plot Debug Buy/Sell Signals
plotshape(finalBuySignal, title="Filtered Buy", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.normal)
plotshape(finalSellSignal, title="Filtered Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.normal)

// Change candle color based on filtered signals
barcolor(finalBuySignal ? color.lime : finalSellSignal ? color.red : na)

// ATR for Stop Loss and Take Profit
atr = ta.atr(atr_length)
tp_long = close + 2 * atr  // Take Profit for Long = 2x ATR
sl_long = close - 1 * atr  // Stop Loss for Long = 1x ATR
tp_short = close - 2 * atr // Take Profit for Short = 2x ATR
sl_short = close + 1 * atr // Stop Loss for Short = 1x ATR

// Strategy Execution
if (finalBuySignal)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", limit=tp_long, stop=sl_long)

if (finalSellSignal)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", limit=tp_short, stop=sl_short)

// Check for BTC/USDT pair
isBTCUSDT = syminfo.ticker == "BTCUSDT"

// Add alerts only for BTC/USDT
alertcondition(isBTCUSDT and finalBuySignal, title="BTCUSDT Buy Signal", message="Buy signal detected for BTCUSDT!")
alertcondition(isBTCUSDT and finalSellSignal, title="BTCUSDT Sell Signal", message="Sell signal detected for BTCUSDT!")