Estrategia de filtro de tendencia de media móvil doble de ancho de banda de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-10-25 15:00:20
Las etiquetas:

img

Esta estrategia genera señales comerciales basadas en bandas de Bollinger y medias móviles dobles, con filtro de tendencia para apuntar a una alta tasa de ganancia y una buena relación ganancia-pérdida.

Estrategia lógica

  1. Utilice las bandas superiores, medias e inferiores de la banda de Bollinger para generar señales largas / cortas.

  2. Utilice promedios móviles a medio plazo de 20 períodos y a largo plazo de 60 períodos para determinar la dirección de la tendencia.

  3. Ajuste dinámico de la posición de stop loss basado en el ancho de la banda de Bollinger. Cuando el ancho es mayor que el 0,5%, stop loss en la banda inferior. Cuando es menor que el 0,5%, reduce la stop loss a la mitad del rango de banda inferior.

  4. Condiciones de entrada: romper la banda inferior como señal de compra durante la tendencia alcista. romper la banda superior como señal de venta durante la tendencia bajista.

  5. Condiciones de salida: Obtener ganancias al tocar la banda superior o el MA corto en los largos.

  6. Condiciones de stop loss: Stop out cuando el precio se rompe por debajo del rango dinámico de banda inferior en los longs. Stop out cuando el precio se rompe por encima del rango dinámico de banda superior en los shorts.

Ventajas

  1. El uso de MAs dobles para determinar la tendencia ayuda a filtrar el ruido de los mercados que no están en tendencia o limitados al rango.

  2. La banda media BB proporciona soporte/resistencia, las bandas superior/inferior sirven como niveles dinámicos de stop loss para controlar el riesgo.

  3. El ajuste del rango de pérdida de parada basado en el ancho de BB reduce la posibilidad de ser detenido mientras se mantiene el stop razonable.

  4. Comerciar en la dirección de la tendencia conduce a una mayor tasa de ganancias.

Los riesgos

  1. Los MAs dobles pueden generar falsas rupturas con frecuencia, perdiendo los puntos de inflexión de la tendencia.

  2. Los BB pueden ser golpeados en mercados agitados y no tendenciales, pueden reducir la frecuencia de las operaciones.

  3. Puede permitir un rango más amplio de pérdida de parada cerca de los niveles de soporte / resistencia propensos a ser retirados.

  4. Incapaz de capitalizar de forma efectiva las retracciones a corto plazo.

Oportunidades de mejora

  1. Optimizar los períodos de autorización para encontrar la mejor opción para las condiciones del mercado.

  2. Optimice el parámetro del multiplicador BB para equilibrar el stop loss.

  3. Añadir otros indicadores para la confirmación multifactorial para mejorar la calidad de la señal.

  4. Incorporar volumen/momento para confirmar la tendencia, evitar la divergencia.

  5. Optimización de la gestión del dinero, por ejemplo, stop loss fraccionario fijo y fijo para controlar el riesgo de una sola operación.

  6. Manejo de choques de precios, por ejemplo, grandes brechas durante la noche.

Resumen de las actividades

Esta es una estrategia robusta en general que utiliza dos MAs para la dirección de la tendencia y BBs para soporte / resistencia y paradas dinámicas. Existen limitaciones como señales de tendencia falsas y paradas demasiado cercanas. Se pueden hacer optimizaciones adicionales en todo el sistema de MA, estrategia de stop loss, gestión de dinero, etc. para aumentar la robustez en varias condiciones de mercado. En general, una excelente estrategia para principiantes con su alta tasa de ganancia, buen perfil de riesgo-recompensa y lógica simple pero efectiva.


/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="yuthavithi BB Scalper 2 strategy", overlay=true)

len = input(20, minval=1, title="Length")
multiplier = input(4, minval=1, title="multiplier")
trendTimeFrame = input(60, minval=1, title="Trend Time Frame")
useTrendFilter = input(true, type=bool, title = "Use Trend Filter")

src = input(close, title="Source")
out = sma(src, len)
//plot(out, title="SMA", color=blue)

stdOut = stdev(close, len)
bbUpper = out + stdOut * multiplier
bbLower = out - stdOut * multiplier
bbUpper2 = out + stdOut * (multiplier / 2)
bbLower2 = out - stdOut * (multiplier / 2)
bbUpperX2 = out + stdOut * multiplier * 2
bbLowerX2 = out - stdOut * multiplier * 2
bbWidth = (bbUpper - bbLower) / out


closeLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), close)
smaLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), sma(close,20))

//plot(smaLongTerm, color=red)

trendUp = useTrendFilter ? (closeLongTerm > smaLongTerm) : true
trendDown = useTrendFilter? (closeLongTerm < smaLongTerm) : true

bearish = ((cross(close,bbUpper2) == 1) or (cross(close,out) == 1)) and (close[1] > close) and trendDown
bullish = ((cross(close,bbLower2) == 1) or (cross(close,out) == 1)) and (close[1] < close) and trendUp


closeBuy = (high[1] > bbUpper[1]) and (close < bbUpper) and (close < open) and trendUp 
closeSell = (((low[1] < bbLower[1]) and (close > bbLower)) or ((low[2] < bbLower[2]) and (close[1] > bbLower[1]))) and (close > open) and trendDown


cutLossBuy = iff(bbWidth > 0.005, (low < bbLower) and (low[1] > bbLower[1]) and trendUp, (low < bbLowerX2) and (low[1] > bbLowerX2[1]) and trendUp)
cutLossSell = iff(bbWidth > 0.005, (high > bbUpper) and (high[1] < bbUpper[1]) and trendDown, (high > bbUpperX2) and (high[1] < bbUpperX2[1]) and trendDown)


if (bullish)
    strategy.entry("Buy", strategy.long, comment="Buy")

if (bearish)
    strategy.entry("Sell", strategy.short, comment="Sell")
    

strategy.close("Buy", closeBuy or cutLossBuy)
   
strategy.close("Sell", closeSell or cutLossSell)


Más.