Estrategia de inversión de tendencia de las bandas de Bollinger

El autor:¿ Qué pasa?, fecha: 2023-11-01 11:29:34
Las etiquetas:

img

Resumen general

Esta estrategia utiliza bandas de Bollinger y promedio móvil para ir largo o corto cuando el precio se acerca a las bandas superiores o inferiores.

La lógica

La estrategia identifica dos señales de entrada:

  1. Señal larga: cuando el precio de cierre alcanza la banda inferior mientras está por encima de la línea EMA, la vela anterior era bajista y la vela actual es alcista.

  2. Señal corto: cuando el precio de cierre alcanza la banda superior mientras está por debajo de la línea EMA, la vela anterior era alcista y la vela actual es bajista.

El nivel de stop loss se establece en el precio de entrada más/menos la relación riesgo/recompensación multiplicado por la distancia entre el precio de entrada y el nivel de take profit.

El take profit utiliza el take profit dinámico. El take profit largo se establece en la banda inferior. El take profit corto se establece en la banda superior.

Ventajas

  1. Combina los puntos fuertes de las estrategias de tendencia y de reversión media, se desempeña bien durante los mercados de rango.

  2. Utiliza bandas de Bollinger para identificar los niveles de sobrecompra y sobreventa, mejorando la precisión de las señales de inversión.

  3. El stop loss fijo facilita la gestión del riesgo.

  4. La toma dinámica de beneficios permite maximizar las ganancias.

Los riesgos

  1. Las estrategias de escape son susceptibles a detener las carreras.

  2. El stop loss frecuente se activa cuando el mercado está muy agitado.

  3. El stop loss fijo no se adapta a la volatilidad del mercado, puede ser demasiado amplio o demasiado ajustado.

  4. El mal ajuste de los parámetros de las bandas de Bollinger puede dar lugar a resultados mediocres.

Mejoramiento

  1. Incorpore un indicador RSI para filtrar las señales de entrada. Por ejemplo, solo vaya largo si el RSI es superior a 50 y solo vaya corto si el RSI es inferior a 50.

  2. Implementar un stop loss adaptativo que ajuste la distancia de parada en función de la volatilidad. Por ejemplo, utilizar ATR para establecer un stop loss dinámico.

  3. Optimizar los parámetros de Bollinger Bands para encontrar las mejores combinaciones de parámetros.

  4. Los valores de los valores de las posiciones en el mercado de valores de las posiciones en el mercado de valores de las posiciones en el mercado de valores de las posiciones en el mercado de valores de las posiciones en el mercado de valores de las posiciones en el mercado de valores.

Resumen de las actividades

La estrategia combina tendencia y reversión, entrando en niveles de sobrecompra/sobreventa identificados por las bandas de Bollinger. Maximiza las ganancias a través de una dinámica de toma de ganancias. Tiene un buen rendimiento durante los mercados de rango. Tenga cuidado con las salidas de parada. Ajusta los parámetros para optimizar el rendimiento. En general, una estrategia práctica y efectiva.


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

//@version=4

// Welcome to yet another script. This script was a lot easier since I was stuck for so long on the Donchian Channels one and learned so much from that one that I could use in this one
// This code should be a lot cleaner compared to the Donchian Channels, but we'll leave that up to the pro's
// This strategy has two entry signals, long = when price hits lower band, while above EMA, previous candle was bearish and current candle is bullish
// Short = when price hits upper band, while below EMA, previous candle was bullish and current candle is bearish
// Take profits are the opposite side's band(lower band for long signals, upper band for short signals). This means our take profit price will change per bar
// Our stop loss doesn't change, it's the difference between entry price and the take profit target divided by the input risk reward
// At the time of writing this, I could probably calculate that much easier by simply multiplying the opposite band by the input risk reward ratio
// Since I want to get this script out and working on the next one, I won't clean that up, I'm sorry
// strategy(shorttitle="BB Trending Reverse Strategy", title="Bollinger Bands Trending Reverse Strategy", overlay=true, default_qty_type = strategy.cash, default_qty_value = 150, initial_capital = 1000, currency = currency.USD, commission_type = "percent", commission_value = 0.036)

// The built-in Bollinger Band indicator inputs and variables, added some inputs of my own and organised the code
length              = input(20, minval=1)
src                 = input(close, title="Source")
mult                = input(2.0, minval=0.001, maxval=50, title="StdDev")
emaInput            = input(title = "EMA Input", type = input.integer, defval = 200, minval = 10, maxval = 400, step = 1)
riskreward          = input(title = "Risk/Reward Ratio", type = input.float, defval = 1.50, minval = 0.01, maxval = 100, step = 0.01)
offset              = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
basis               = sma(src, length)
dev                 = mult * stdev(src, length)
upper               = basis + dev
lower               = basis - dev
ema                 = ema(close, emaInput)

// These are our conditions as explained above
entryLong           = low[1] <= lower[1] and low <= lower and low > ema
entryShort          = high[1] >= upper[1] and high >= upper and high < ema
reversecandleLong   = close > open and close[1] < open[1]
reversecandleShort  = close < open and close[1] > open[1]
var stopLong        = 0.0
var stopShort       = 0.0

// These are our entry signals, notice how the stop condition is within the if statement while the strategy.exit is outside of the if statement, this way the take profit targets trails up or down depending on what the price does
if reversecandleLong and entryLong and strategy.position_size == 0
    stopLong := (((close / upper - 1) * riskreward + 1) * close)
    strategy.entry("Long Entry", strategy.long, comment = "Long Entry")
    
strategy.exit("Exit Long", "Long Entry", limit = upper, stop = stopLong, comment = "Exit Long")

if reversecandleShort and entryShort and strategy.position_size == 0
    stopShort := (((close / lower - 1) / riskreward + 1) * close)
    strategy.entry("Short Entry", strategy.short, comment = "Short Entry")

strategy.exit("Exit Short", "Short Entry", limit = lower, stop = stopShort, comment = "Exit Short")


// The built-in Bollinger Band plots
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
plot(ema, color=color.red)

// These plots are to check the stoplosses, they can  make a mess of your chart so only use these if you want to make sure these work
// plot(stopLong)
// plot(stopShort)

Más.