Estrategia de onda FiboBuLL basada en la ruptura de bandas de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-12-01 14:11:56
Las etiquetas:

img

Resumen general

La estrategia FiboBuLL Wave está adaptada de la versión filtrada del estudio de Bollinger Bands, que se puede encontrar en mi página de guiones.

Las bandas de Bollinger son un indicador clásico que utiliza una media móvil simple de 20 períodos, junto con gráficos de bandas superiores e inferiores que están a 2 desviaciones estándar de la banda media.

La estrategia no tiene en cuenta ningún otro parámetro como el volumen / RSI / Fundamentos, etc., por lo que el usuario debe usar discreción basada en confirmaciones de otros indicadores o fundamentos.

Funciona mejor cuando hay continuación de la barra después de que el precio cierra por encima / por debajo de las bandas superiores / inferiores. Definitivamente es beneficioso usar esta estrategia o el filtro de bandas de Bollinger junto con otros indicadores para obtener una visión temprana de la ruptura / falla de las bandas en el cierre de la vela durante el apretón de BB o basado en la volatilidad.

La estrategia se puede utilizar en velas Heikin Ashi para detectar tendencias, pero no se recomiendan velas HA para entradas comerciales, ya que no reflejan el precio real del activo.

Estrategia lógica

La lógica central detrás de la estrategia FiboBuLL Wave es operar basándose en la ruptura de las bandas de Bollinger. Las bandas de Bollinger consisten en una banda media, una banda superior y una banda inferior. La banda media es un promedio móvil simple de 21 períodos del precio de cierre; la banda superior se calcula agregando 1 desviación estándar por encima de la banda media, lo que refleja el rango superior de la fluctuación de precios; la banda inferior se deriva restando 1 desviación estándar por debajo de la banda media, lo que refleja el rango inferior del movimiento de precios.

Una señal larga se genera cuando el precio de cierre se rompe por encima de la banda superior; Una señal corta se activa cuando el precio de cierre se rompe por debajo de la banda inferior. Después de tomar posiciones largas o cortas, las operaciones existentes se cerrarán cuando el precio vuelva a romper la banda opuesta.

La estrategia utiliza la función barssince para rastrear la ruptura del precio en relación con las bandas superior e inferior. Una señal larga se genera cuando el número de barras desde la ruptura de la banda superior es menor que el de la banda inferior. Una señal corta se activa cuando el número de barras desde la ruptura de la banda inferior es menor que el de la banda superior.

Al ajustar el período de banda media y los parámetros del multiplicador de la desviación estándar, se puede cambiar la sensibilidad de ruptura de las bandas de Bollinger, ajustando así el momento de entrada.

Ventajas

La estrategia FiboBuLL Wave tiene algunas ventajas:

  1. Lógica simple basada en el escape de BB, fácil de entender
  2. La sensibilidad de ruptura se puede controlar ajustando los parámetros
  3. Las bandas BB visualizan la fluctuación y tendencia de los precios
  4. Puede combinarse con otros indicadores, mejorar la precisión
  5. Aplicable a varios marcos de tiempo

Los riesgos

También hay algunos riesgos a tener en cuenta para la estrategia FiboBuLL Wave:

  1. Propenso a señales falsas basándose únicamente en el escape de BB
  2. Incapaz de determinar el impulso y la duración después del escape
  3. No hay reglas de salida para la inversión
  4. Riesgo elevado sin pérdida de liquidación

Las optimizaciones pueden realizarse en los siguientes aspectos:

  1. Añadir filtros con otros indicadores para evitar señales falsas
  2. Optimizar los parámetros basados en datos históricos
  3. Configurar el stop loss para limitar la pérdida máxima
  4. Considere la posibilidad de añadir factores de reversión para determinar la persistencia

Oportunidades de mejora

Las principales direcciones de optimización para la estrategia FiboBuLL Wave:

  1. Añadir indicadores de volumen, por ejemplo, línea A/D para evitar una ruptura débil
  2. Combinar indicadores de sobrecompra/sobreventa, por ejemplo, el índice de rentabilidad para mejorar la precisión
  3. Optimizar parámetros como el período y el multiplicador de desviación basado en los resultados de backtest
  4. Establecer el stop loss y tomar ganancias para controlar el riesgo y bloquear las ganancias
  5. Considere los filtros de tendencia e inversión para determinar la persistencia direccional
  6. Prueba de parámetros óptimos en diferentes productos y plazos

Con las mejoras anteriores, la estabilidad y la rentabilidad de la estrategia FiboBuLL Wave pueden mejorarse en gran medida.

Resumen de las actividades

La estrategia FiboBuLL Wave utiliza el principio básico de las bandas de Bollinger para identificar las rupturas y las reversiones a la banda media para rastrear la volatilidad de los precios.

Sin embargo, depender únicamente de la ruptura tiende a generar señales falsas y frenos, por lo que se deben incorporar confirmaciones utilizando volumen, tendencias, indicadores, etc. para determinar la confiabilidad de la ruptura, mientras se implementa el stop loss/take profit para controlar los riesgos, con el fin de maximizar la utilidad de la estrategia.

La estrategia FiboBuLL Wave proporciona un marco básico para diseñar operaciones basadas en la acción del precio.


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

//@version=5
//@FiboBuLL

strategy(shorttitle='FB Wave', title='FiboBuLL Wave (A version of Bollinger Bands Breakout Strategy By Trade Chartist)', overlay=true, pyramiding=1, currency=currency.NONE, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

src = input(close, title='Source')
length = input.int(21, minval=1, title='SMA length')  // 20 for classis Bollinger Bands SMA line (basis)


mult = input.float(1., minval=0.236, maxval=2, title='Standard Deviation')  //2 for Classic Bollinger Bands //Maxval = 2 as higher the deviation, higher the risk
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)

Show = input.string('Both', options=['Longs Only', 'Shorts Only', 'Both'], title='Trade Type')
CC = input(true, 'Color Bars')

upper = basis + dev
lower = basis - dev

//Conditions for Long and Short - Extra filter condition can be used such as RSI or CCI etc.

short = src < lower  // and rsi(close,14)<40
long = src > upper  // and rsi(close,14)>60

L1 = ta.barssince(long)
S1 = ta.barssince(short)

longSignal = L1 < S1 and not (L1 < S1)[1]
shortSignal = S1 < L1 and not (S1 < L1)[1]

//Plots and Fills


////Long/Short shapes with text
// plotshape(S1<L1 and not (S1<L1)[1]?close:na, text = "sᴇʟʟ", textcolor=#ff0100, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "SELL", editable = true)
// plotshape(L1<S1 and not (L1<S1)[1]?close:na, text = "ʙᴜʏ", textcolor = #008000, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "BUY", editable = true)  

// plotshape(shortSignal?close:na, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "Short Signal", editable = true)
// plotshape(longSignal?close:na, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "Long Signal", editable = true)  


p1 = plot(upper, color=color.new(#ff0000, 75), display=display.all, title='Upper Band')
p2 = plot(lower, color=color.new(#008000, 75), display=display.all, title='Lower Band')

p = plot(basis, color=L1 < S1 ? #008000 : S1 < L1 ? #ff0000 : na, linewidth=2, editable=false, title='Basis')

fill(p, p1, color=color.new(color.teal, 85), title='Top Fill')  //fill for basis-upper
fill(p, p2, color=color.rgb(217, 161, 161), title='Bottom Fill', transp=85)  //fill for basis-lower

//Barcolor

bcol = src > upper ? color.new(#8ceb07, 0) : src < lower ? color.new(#ff0000, 0) : src > basis ? color.green : src < basis ? color.red : na

barcolor(CC ? bcol : na, editable=false, title='Color Bars')


// === INPUT BACKTEST RANGE ===
FromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=2015)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=2010)

// === FUNCTION EXAMPLE === 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)  // backtest finish window
window() =>
    time >= start and time <= finish ? true : false

if window() and (Show == 'Longs Only' or Show == 'Both')
    strategy.entry('AL', direction=strategy.long, when=longSignal)
    strategy.close('LongAL', when=shortSignal, comment='AL KAPA')

if window() and (Show == 'Shorts Only' or Show == 'Both')
    strategy.entry('SAT', direction=strategy.short, when=shortSignal)
    strategy.close('SAT', when=longSignal, comment='SAT KAPA')




















Más.