Estrategia de negociación de ruptura de la banda de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-12-19 14:08:45
Las etiquetas:

img

Resumen general

Esta estrategia se basa en los rieles superior e inferior de las bandas de Bollinger para determinar cuándo el precio rompe el rieles superior de las bandas de Bollinger para ir largo y rompe el rieles inferior para ir corto.

Estrategia lógica

Esta estrategia utiliza el tren medio / superior / inferior de las bandas de Bollinger para determinar rangos de precios extremos. El tren medio es el promedio móvil simple de los precios de cierre en los últimos 25 períodos. Los carriles superior e inferior son una desviación estándar por encima y por debajo del tren medio. Cuando el precio rompe el tren superior o inferior, indica que hay una ruptura y un comportamiento anormal del precio, que se puede usar para tomar decisiones comerciales.

Si el precio está por debajo del rieles inferior, ir largo. Si el precio está por encima del rieles superior, ir corto. Cuando ir largo, establecer el stop loss al precio de entrada multiplicado por el factor de stop loss y tomar el beneficio al precio de entrada multiplicado por el factor de tomar el beneficio.

La estrategia también incorpora algunas reglas auxiliares, como permitir solo una señal por 24 horas para evitar operaciones innecesarias.

Ventajas de la estrategia

  1. El uso de bandas de Bollinger para determinar rangos de precios anormales pertenece a las estrategias de seguimiento de tendencias que pueden capturar las tendencias de precios.
  2. Los parámetros de stop loss y take profit se establecen de acuerdo con principios para controlar pérdidas individuales.
  3. Se añaden algunas reglas auxiliares para evitar señales duplicadas y operaciones innecesarias.

Riesgos de la estrategia

  1. Las bandas de Bollinger no pueden representar completamente las tendencias de precios, y puede haber señales falsas.
  2. El tiempo incorrecto de las señales de ruptura puede llevar a pérdidas.
  3. La duración y el impulso de los mercados de tendencia o no tendencia son difíciles de predecir, lo que puede dar lugar a posiciones largas innecesarias.

Gestión de riesgos:

  1. Ajuste los parámetros de la banda de Bollinger para optimizar el tiempo de la señal de ruptura.
  2. Incorporar otros indicadores para determinar la tendencia principal.
  3. Establezca el intervalo de stop loss y take profit de acuerdo con diferentes productos y condiciones de mercado.

Direcciones de optimización

  1. Considere la optimización adaptativa de los parámetros de la banda de Bollinger para adaptarlos mejor a las condiciones actuales del mercado.
  2. Incorporar otros indicadores para evaluar la fiabilidad de las señales de tendencia y evitar señales falsas.
  3. Incorporar modelos de aprendizaje automático para identificar automáticamente el tiempo óptimo largo y corto.

Conclusión

En resumen, esta es una estrategia de seguimiento de tendencias simple que utiliza bandas de Bollinger para determinar precios anormales y seguir tendencias.


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

//@version=5
strategy("I11L OIL Bot",overlay=true, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)

leverage = input.float(1,"Leverage (x)",step=1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade (%)", minval=0.1, maxval=100, step=0.05) / 100 / leverage
TP_Factor = input.float(2, step=0.1)
invertBuyLogic = input.bool(false)
 
lookbackDistance = input.int(25)
devMult = input.float(2,step=0.1)

var lastSellHour = 0
var disableAdditionalBuysThisDay = false


if(time > lastSellHour + 1000 * 60 * 60 * 6)
    disableAdditionalBuysThisDay := false
if(strategy.position_size != strategy.position_size[1])
    disableAdditionalBuysThisDay := true
    lastSellHour := time

source = close

//Trade Logic
basis = ta.sma(source, lookbackDistance)
dev = devMult * ta.stdev(source, lookbackDistance)
upper = basis + dev
lower = basis - dev
isBuy = ta.crossunder(source, upper)
isBuyInverted = ta.crossover(source, lower)

plot(upper, color=color.white)
plot(lower, color=color.white)

strategy.initial_capital = 50000

if((invertBuyLogic ? isBuyInverted : isBuy) and not(disableAdditionalBuysThisDay))
    strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)

if(strategy.position_size > 0)
    strategy.exit("SL Long", "Long", stop=strategy.position_avg_price * SL_Factor)
    strategy.close("Long",  when=close > strategy.position_avg_price * (1 + (1 - SL_Factor) * TP_Factor), comment="TP Long")





Más.