BB21_SMA200 Seguimiento de la tendencia de la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-11-16 11:04:42
Las etiquetas:

img


Resumen general

Esta estrategia combina las bandas de Bollinger y el promedio móvil para diseñar una tendencia siguiendo el sistema de negociación. Va largo cuando el precio rompe la banda superior de las bandas de Bollinger y la banda inferior está por encima de SMA200, cierra una posición parcial cuando el precio rompe la banda inferior y sale cuando el precio cruza por debajo de SMA200. La estrategia sigue la tendencia y corta la pérdida a tiempo cuando cambia la tendencia.

Estrategia lógica

  1. Calcular el SMA200 como promedio móvil exponencial para determinar la tendencia principal
  2. Calcular las bandas de Bollinger, incluidas la banda superior, la banda media y la banda inferior, y rellenar el color como rango de ganancias.
  3. Cuando ambas bandas superior e inferior están por encima de SMA200, indica una tendencia alcista.
  4. Cuando el precio se rompe a través de la banda media de Bollinger Bands hacia arriba, ir largo
  5. Cuando el precio rompe la banda inferior hacia abajo, cierre la posición parcial
  6. Cuando el precio cruza por debajo de SMA200, indica una reversión de la tendencia principal, cierre todas las posiciones.
  7. Establecer el punto de parada de pérdida para evitar pérdidas excesivas
  8. Calcular el tamaño de la operación basándose en el capital de la cuenta y el riesgo aceptable

La premisa de esta estrategia para identificar una tendencia es que las bandas de Bollinger deben estar completamente por encima de la SMA200, y solo se extenderán cuando se presente una clara tendencia alcista.

Análisis de ventajas

  1. Utilice bandas de Bollinger en lugar de un único indicador para identificar una tendencia clara
  2. SMA200 determina la dirección de tendencia principal, evita operaciones innecesarias en el mercado de rango
  3. Pérdida parcial de parada para seguir las tendencias
  4. Detener pérdidas oportunamente en puntos clave para minimizar las pérdidas
  5. Calcular el tamaño de la operación introduce la gestión del riesgo para evitar pérdidas excesivas en una sola operación

Análisis de riesgos

  1. Las señales de ruptura generadas por bandas de Bollinger pueden tener señales falsas relativamente altas.
  2. Los puntos de stop loss parciales deben optimizarse para evitar una stop loss prematura.
  3. Si el punto de parada de pérdida es demasiado estrecho, la parada de pérdida puede activarse con demasiada frecuencia
  4. El período de SMA debe probarse y optimizarse para equilibrar el retraso y la sensibilidad
  5. El método de cálculo del tamaño de la operación puede necesitar una optimización para evitar un tamaño excesivo en operaciones individuales

Estos riesgos podrían reducirse mediante pruebas cuidadosas de los parámetros de las bandas de Bollinger, la optimización de la estrategia de stop loss parcial, el ajuste del período de SMA y la introducción de métodos más científicos de gestión del riesgo.

Direcciones de optimización

  1. Prueba y optimiza los parámetros de Bollinger Bands para reducir las señales falsas
  2. Investigue cómo establecer los puntos de parada de pérdida parcial adecuados
  3. Prueba del período óptimo de SMA
  4. Considere paradas adaptativas en lugar de puntos fijos de pérdida de paradas
  5. Estudio basado en el tamaño de las posiciones basado en la volatilidad para un cálculo más científico del tamaño de las operaciones
  6. Prueba de retroceso con costes de negociación para simular operaciones reales
  7. Considerar la combinación con otros indicadores para mejorar la solidez de la estrategia

Conclusión

Esta estrategia integra Bollinger Bands y SMA para diseñar un sistema de seguimiento de tendencias relativamente completo. Es confiable en la identificación de la existencia de tendencias y tiene una fuerte capacidad de seguimiento de tendencias. Al optimizar continuamente la estrategia de stop loss, reducir los errores de señal e introducir técnicas científicas de gestión de riesgos, esta estrategia puede convertirse en un sistema valioso para realizar un seguimiento en el comercio en vivo. Proporciona un enfoque de combinación de múltiples indicadores para el diseño de estrategias comerciales cuantitativas.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4
strategy(title="BB9_MA200_Strategy", overlay=true, pyramiding=1,     default_qty_type=strategy.cash,  initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed, 


var stopLossVal=0.00

//variables BEGIN
smaLength=input(200,title="MA Length")
bbLength=input(21,title="BB Length")  

bbsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")


stopLoss = input(title="Stop Loss%", defval=5, minval=1)

riskCapital = input(title="Risk % of capital  == Based on this trade size is claculated    numberOfShares = (AvailableCapital*risk/100) / stopLossPoints", defval=10, minval=1)


sma200=ema(close,smaLength)

plot(sma200, title="SMA 200", color=color.orange)


//bollinger calculation
basis = sma(bbsrc, bbLength)
dev = mult * stdev(bbsrc, bbLength)
upperBand = basis + dev
lowerBand = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

//plot bb
plot(basis, "Basis", color=color.teal, style=plot.style_circles , offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=color.teal, transp=95)


strategy.initial_capital = 50000

//Entry---

strategy.entry(id="LE", comment="LE capital="+tostring(strategy.initial_capital + strategy.netprofit ,"######.##"), qty=( (strategy.initial_capital + strategy.netprofit ) * riskCapital / 100)/(close*stopLoss/100) , long=true,  when=strategy.position_size<1 and upperBand>sma200 and lowerBand > sma200 and crossover(close, basis) )     //  // aroonOsc<0  //(strategy.initial_capital * 0.10)/close


barcolor(color=strategy.position_size>=1? color.blue: na)

//partial Exit
tpVal=strategy.position_size>1 ? strategy.position_avg_price * (1+(stopLoss/100) ) : 0.00
strategy.close(id="LE", comment="Partial points="+tostring(close - strategy.position_avg_price, "####.##"),  qty_percent=30 , when=abs(strategy.position_size)>=1 and close>tpVal and crossunder(lowerBand, sma200)   )   //close<ema55 and rsi5Val<20 //ema34<ema55


//close All on stop loss
//stoploss
stopLossVal:=   strategy.position_size>1 ? strategy.position_avg_price * (1-(stopLoss/100) ) : 0.00

strategy.close_all( comment="SL Exit points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and close < stopLossVal  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89//

strategy.close_all( comment="BB9 X SMA200 points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and  crossunder(basis, sma200)  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89
    

Más.