La stratégie FiboBuLL Wave est une stratégie de trading basée sur la version de filtrage de la ceinture de Brin, que vous trouverez sous la page de mon programme. La stratégie fait plus lorsque la clôture du prix est supérieure à la trajectoire supérieure et fait moins lorsque la clôture du prix est inférieure à la trajectoire inférieure.
Les bandes de Brin sont un indicateur classique qui utilise une moyenne mobile simple de 20 cycles, ainsi que des bandes ascendantes et descendantes de 2 écarts standard de la ligne de référence. Ces bandes aident à visualiser la volatilité et la tendance des prix en fonction de la position des prix par rapport aux bandes.
La stratégie ne prend pas en compte d’autres paramètres, tels que le volume de transactions, le RSI, les fondamentaux, etc., de sorte que l’utilisateur doit exercer son libre arbitre en fonction de la confirmation ou des fondamentaux provenant d’autres indicateurs. Les résultats de la stratégie sont purement basés sur des transactions à plusieurs têtes et à vide, sans tenir compte d’objectifs ou de stop-loss définis par l’utilisateur.
La stratégie est la plus efficace lorsque le prix atteint des pics/baisses de clôture sur des piliers consécutifs. Il est certainement judicieux de décider d’utiliser cette stratégie ou le filtre de Brin avec d’autres indicateurs lorsque le prix atteint des pics/baisses de clôture sur des piliers consécutifs ou des pics/baisses de prix basés sur la volatilité.
Cette stratégie peut être utilisée sur des graphiques horaires et horaires, ou pour détecter des tendances dans des stratégies en ligne droite et en ligne gauche, mais elle n’est pas recommandée pour les entrées de négociation, car elles ne peuvent pas refléter le prix réel de l’actif.
Le principe de base de la stratégie d’onde FiboBuLL est la rupture des prix basée sur l’indicateur de la ceinture de Brin. La ceinture de Brin est composée d’un milieu, d’un haut et d’un bas. Le milieu est la moyenne mobile simple à 21 cycles du prix de clôture; le haut est calculé par le milieu plus la distance au-dessus du milieu, qui reflète la gamme de fluctuation vers le haut du prix; le bas est calculé par le milieu moins la distance au-dessous du milieu, qui reflète la gamme de fluctuation vers le bas.
Un signal de coupe est généré lorsque le prix de clôture est en train de traverser l’orbite; un signal de coupe est généré lorsque le prix de clôture est en train de traverser l’orbite. Après avoir fait une coupe supplémentaire, il est à nouveau en position de rupture lorsque l’orbite opposée est brisée.
Cette stratégie utilise la fonction barssince pour suivre le prix par rapport aux ruptures de la voie ascendante et descendante. Un signal de plus est produit lorsque le nombre de colonnes de rupture de la voie ascendante est inférieur au nombre de colonnes de rupture de la voie descendante et un signal de vide est produit lorsque le nombre de colonnes de rupture de la voie descendante est inférieur au nombre de colonnes de rupture de la voie ascendante.
En ajustant le paramètre de la période de la demi-orbite et le paramètre du multiple de l’écart standard, on peut modifier la sensibilité de rupture de la ceinture de Bourin, afin d’ajuster le temps d’entrée.
La stratégie d’onde FiboBuLL présente les avantages suivants:
Les stratégies FiboBuLL comportent également des risques à prendre en compte:
Les risques mentionnés ci-dessus peuvent être optimisés dans les domaines suivants:
La stratégie FiboBuLL sur les ondes peut être optimisée dans les domaines suivants:
En optimisant les points ci-dessus, on peut considérablement améliorer la stabilité et la rentabilité de la stratégie d’onde FiboBuLL.
La stratégie d’onde FiboBuLL utilise les principes fondamentaux de la courbe de Brin pour déterminer les ruptures et les retours de prix, pour suivre les fluctuations des prix sur et en dessous de l’orbite moyenne et pour former des signaux de transaction avec des ruptures. La stratégie est simple en concept et est une méthode efficace pour suivre la volatilité du marché.
Cependant, la simple dépendance à une rupture peut entraîner des signaux erronés et des ruptures impuissantes. Par conséquent, il faut combiner la tendance, le volume de transactions et d’autres facteurs pour juger de la fiabilité de la rupture et définir les risques de contrôle de l’arrêt de la perte pour tirer le meilleur parti de la stratégie.
La stratégie d’ondes FiboBuLL nous fournit un cadre de base pour déterminer le moment de la transaction en fonction des fluctuations des prix. La stratégie peut être un outil puissant pour la prise de décision de négociation dans le processus d’optimisation continue et de coordination avec d’autres indicateurs.
/*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')