Estrategia de las bandas de Bollinger para la media móvil única

El autor:¿ Qué pasa?, Fecha: 2023-12-22 14:10:14
Las etiquetas:

img

Resumen general

Esta estrategia se basa en un solo promedio móvil e indicador de bandas de Bollinger. Genera señales de compra y venta cuando el precio rompe la banda superior o inferior de las bandas de Bollinger. También incorpora la dirección del promedio móvil para determinar la tendencia, solo toma mucho tiempo cuando el MA está subiendo y corto cuando el MA está cayendo.

Estrategia lógica

La estrategia utiliza principalmente los siguientes indicadores para la evaluación:

  1. Promedio móvil (SMA): promedio móvil simple del precio CLOSE, que representa la tendencia del precio.
  2. Banda superior de Bollinger: representa el nivel de resistencia, la ruptura indica un fuerte impulso.
  3. Banda de Bollinger inferior: representa el nivel de soporte, el desglose indica una posible inversión de tendencia.

Las señales comerciales específicas son:

  1. Si el precio de cierre rompe la banda superior y el MA está subiendo.
  2. Si el precio de cierre rompe la banda inferior y el MA está cayendo.

Al combinar la tendencia y la ruptura, la señal de negociación se vuelve más confiable y evita una falsa ruptura.

Ventajas

  1. Reglas simples y claras, fáciles de entender y aplicar.
  2. MA juzga la tendencia general de evitar el mercado alcista corto y el mercado bajista largo.
  3. Las bandas de Bollinger superior e inferior localizan los puntos de ruptura locales con precisión.
  4. Las reducciones son relativamente pequeñas y coinciden con las preferencias de riesgo de la mayoría de las personas.

Los riesgos

  1. Indicador único tiende a generar señales falsas, puede ser mejorado por ajuste de parámetros.
  2. No puede hacer frente a las grandes fluctuaciones del mercado, puede ajustar el stop loss en consecuencia.
  3. Incapaz de sacar más provecho de las mega tendencias, puede considerar un tamaño de posición más grande.

Mejoras

  1. Optimizar los períodos de admisión para adaptarse a más productos.
  2. Añadir otros filtros como MACD para reducir las señales falsas.
  3. Ajuste dinámico de stop loss para limitar el maximum drawdown.
  4. Introducir la gestión del dinero para estabilizar el rendimiento del PNL.

Conclusión

En general, esta es una estrategia simple pero práctica adecuada para la mayoría de las personas. Con algunos ajustes y optimizaciones puede ser más robusta y adaptable a más situaciones de mercado.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD")
s=input(title="s",defval=90)
p=input(title="p",type=float,defval=.9,step=.1)

sa=sma(close,s)
plot(sa,color=red,linewidth=3)
band=stdev(close,s)*p
plot(band+sa,color=lime,title="")
plot(-band+sa,color=lime,title="")

// ===Strategy Orders============================================= ========
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

longCondition = crossover(close,sa+band) and rising(sa,5)
shortCondition = crossunder(close,sa-band) and falling(sa,5)
crossmid = cross(close,sa)


strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = shortCondition)
strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = longCondition)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)

Más.