La estrategia de ondas FiboBuLL es una estrategia de negociación basada en una versión adaptada del filtro de la cinta de Bryn, que se puede encontrar en mi página de programas. La estrategia hace más cuando el precio se cierra por encima de la vía superior y se queda en blanco cuando el precio se cierra por debajo de la vía inferior.
Las bandas de Brin son un indicador clásico que utiliza una media móvil simple de 20 períodos, y una banda ascendente y descendente de 2 diferencias estándar de la línea de referencia. Estas bandas ayudan a visualizar la volatilidad y la tendencia de los precios en función de la posición de los precios con respecto a las bandas.
La estrategia no tiene en cuenta otros parámetros como el volumen de negocios, el RSI, los fundamentos, etc., por lo que el usuario debe ejercer su libre arbitrio en función de la confirmación o los fundamentos de otros indicadores. Los resultados de la estrategia se basan exclusivamente en operaciones de más y menos, sin tener en cuenta ningún objetivo o stop loss definido por el usuario.
La estrategia funciona mejor cuando el precio se cierra con una ruptura de trayecto arriba/abajo en columnas consecutivas. La decisión de usar la estrategia o el filtro de la barra de Brin junto con otros indicadores es sin duda una decisión inteligente cuando el precio se cierra con una ruptura de trayecto arriba/abajo en la barra de Brin o se cierra con una ruptura de trayecto arriba/abajo en la barra de Brin basado en la volatilidad.
La estrategia se puede usar en gráficos de línea diurna y horaria, y también se puede encontrar tendencias en estrategias de línea positiva y negativa, pero no se recomienda para las entradas de negociación, ya que no reflejan el precio real de los activos.
El principio central de la estrategia de ondas de FiboBuLL es la ruptura de precios basados en el indicador del cinturón de Brin. El cinturón de Brin se compone de la media, la media y la media. La media es un promedio móvil simple de 21 ciclos del precio de cierre; la media se obtiene de la media, más la distancia de la media, por encima de la diferencia estándar, que refleja el rango de fluctuación superior del precio; la media, menos la distancia de la media, por debajo de la media, por debajo de la distancia, por debajo de la diferencia estándar, que refleja el rango de fluctuación inferior del precio.
Cuando el precio de cierre en la parte superior se cruza en la órbita, se produce una señal de apertura; cuando el precio de cierre en la parte inferior se cruza en la órbita, se produce una señal de cierre. Después de hacer un cierre adicional, vuelve a romper la órbita opuesta.
La estrategia utiliza la función barssince para rastrear el precio en relación con el número de rupturas en la vía ascendente y descendente. Cuando el número de columnas de rupturas en la vía ascendente es menor que el número de columnas de rupturas en la vía descendente, se produce una señal de parálisis.
Al ajustar los parámetros del ciclo de la órbita media y el parámetro del múltiplo de la diferencia estándar, se puede cambiar la sensibilidad de ruptura de la banda de Bryn para ajustar el tiempo de entrada.
La estrategia de ondas FiboBuLL tiene algunas ventajas:
La estrategia de ondas FiboBuLL también tiene algunos riesgos a tener en cuenta:
En relación con los riesgos mencionados, se puede optimizar en los siguientes aspectos:
La estrategia de ondas FiboBuLL también incluye algunas de las principales direcciones de optimización:
Con las optimizaciones mencionadas, se puede mejorar considerablemente la estabilidad y la rentabilidad de la estrategia de ondas FiboBuLL.
La estrategia de ondas FiboBuLL utiliza los principios básicos de las bandas de Brin para determinar las rupturas de precios y las devoluciones a la órbita media, para rastrear las fluctuaciones de los precios en la órbita media y en la órbita media, y para formar señales de negociación con rupturas. La estrategia es simple en concepto, de amplia aplicación y es una forma eficaz de seguir la volatilidad del mercado.
Sin embargo, la mera dependencia de la ruptura es propensa a la formación de señales erróneas y la impotencia de la ruptura. Por lo tanto, la combinación de la tendencia, el volumen de transacciones y otros factores para determinar la fiabilidad de la ruptura, la configuración de los riesgos de control de la parada de pérdidas, para que la máxima eficacia de la estrategia.
La estrategia de ondas de FiboBuLL nos proporciona un marco básico para determinar el momento de negociar en función de las fluctuaciones de precios. La estrategia puede ser una herramienta poderosa para tomar decisiones comerciales en el proceso de optimización continua y en combinación con otros indicadores.
/*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')