Esta estrategia es un sistema de negociación de inversión media adaptativo basado en el indicador de Bollinger Bands. Captura oportunidades de sobrecompra y sobreventa mediante el monitoreo de cruces de precios con Bollinger Bands, operando con el principio de inversión media. La estrategia incorpora dimensionamiento dinámico de posiciones y mecanismos de gestión de riesgos, adecuados para múltiples mercados y plazos.
La lógica básica se basa en los siguientes puntos: 1. Utiliza la media móvil de 20 períodos como banda media, con 2 desviaciones estándar para las bandas superior e inferior. 2. Abre posiciones largas cuando el precio se rompe por debajo de la banda inferior (señal de sobreventa). 3. Abre posiciones cortas cuando el precio se rompe por encima de la banda superior (señal de sobrecompra). 4. Obtiene ganancias cuando el precio vuelve a la banda media. 5. Establece un 1% de stop loss y un 2% de take profit, logrando una relación riesgo-recompensación de 2: 1. 6. emplea el tamaño de posición basado en el porcentaje, invirtiendo el 1% del capital de la cuenta por operación.
El riesgo de mercado de consolidación - Puede dar lugar a pérdidas debido a las operaciones frecuentes en mercados variados. Solución: Añadir filtros de tendencia, sólo comerciar cuando la tendencia es clara.
Riesgo de ruptura falsa: el precio puede revertirse rápidamente después de la ruptura. Solución: añadir señales de confirmación como el volumen u otros indicadores técnicos.
El riesgo sistémico - Puede sufrir mayores pérdidas en condiciones extremas de mercado. Solución: Implementar límites máximos de extracción, detener automáticamente la negociación cuando se alcanza el umbral.
Esta estrategia captura la desviación de precios utilizando bandas de Bollinger y opera con el principio de reversión media. Su gestión de riesgos integral y sus reglas comerciales claras proporcionan una buena practicidad. A través de optimizaciones sugeridas, la estabilidad y rentabilidad de la estrategia pueden mejorarse aún más. Es adecuada para los operadores cuantitativos que buscan rendimientos constantes.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 10m basePeriod: 10m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Bollinger Bands Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200) // Inputs for Bollinger Bands bbLength = input.int(20, title="Bollinger Bands Length") bbStdDev = input.float(2.0, title="Bollinger Bands StdDev") // Inputs for Risk Management stopLossPerc = input.float(1.0, title="Stop Loss (%)", minval=0.1, step=0.1) takeProfitPerc = input.float(2.0, title="Take Profit (%)", minval=0.1, step=0.1) // Calculate Bollinger Bands basis = ta.sma(close, bbLength) bbStdev = ta.stdev(close, bbLength) upper = basis + bbStdDev * bbStdev lower = basis - bbStdDev * bbStdev // Plot Bollinger Bands plot(basis, color=color.blue, title="Middle Band") plot(upper, color=color.red, title="Upper Band") plot(lower, color=color.green, title="Lower Band") // Entry Conditions longCondition = ta.crossover(close, lower) shortCondition = ta.crossunder(close, upper) // Exit Conditions exitLongCondition = ta.crossunder(close, basis) exitShortCondition = ta.crossover(close, basis) // Stop Loss and Take Profit Levels longStopLoss = close * (1 - stopLossPerc / 100) longTakeProfit = close * (1 + takeProfitPerc / 100) shortStopLoss = close * (1 + stopLossPerc / 100) shortTakeProfit = close * (1 - takeProfitPerc / 100) // Execute Long Trades if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", stop=longStopLoss, limit=longTakeProfit) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit) // Close Positions on Exit Conditions if (exitLongCondition and strategy.position_size > 0) strategy.close("Long") if (exitShortCondition and strategy.position_size < 0) strategy.close("Short") // 🔊 SOUND ALERTS IN BROWSER 🔊 if (longCondition) alert("🔔 Long Entry Signal!", alert.freq_once_per_bar_close) if (shortCondition) alert("🔔 Short Entry Signal!", alert.freq_once_per_bar_close) if (exitLongCondition) alert("🔔 Closing Long Trade!", alert.freq_once_per_bar_close) if (exitShortCondition) alert("🔔 Closing Short Trade!", alert.freq_once_per_bar_close)