Stratégie des bandes de Bollinger de Supertrend

Auteur:ChaoZhang est là., Date: 12-01-2023 16h29 et 56 min
Les étiquettes:

img

Résumé

La stratégie Supertrend Bollinger Bands est une stratégie commune d'indicateur de trailing stop basée sur l'ATR (Average True Range). Cette stratégie utilise l'indicateur Supertrend pour dessiner des canaux de tendance haussière et baissière sur le graphique et génère des signaux de trading en combinaison avec les Bollinger Bands.

La logique de la stratégie

La stratégie utilise deux paramètres principaux - période et multiplicateur, avec des valeurs par défaut de 10 et 3 respectivement, pour calculer les lignes de Supertrend.

Ligne supérieure: Fermer - (multiplicateur x ATR) Ligne inférieure: Fermer + (multiplicateur x ATR)

Lorsque le prix de clôture est supérieur à la ligne supérieure précédente, il est considéré comme un signal haussier. Lorsque le prix de clôture dépasse la ligne inférieure précédente, il est considéré comme un signal baissier.

La stratégie intègre également l'indicateur Bollinger Bands, en utilisant la bande du milieu comme référence, et les bandes supérieure et inférieure situées à deux écarts standards de celle-ci. Un signal d'achat est généré lorsque le prix dépasse la bande du milieu depuis le bas. Un signal de vente est généré lorsque le prix dépasse la bande du milieu depuis le haut.

Les avantages

  1. Utilisez l'ATR pour calculer dynamiquement la volatilité, capturant rapidement les changements de tendance du marché
  2. La combinaison des bandes de Bollinger rend les signaux de trading plus fiables
  3. Paramètres personnalisables adaptés aux différents environnements du marché

Les risques

  1. Prédisposé à de faux signaux sur les marchés latéraux
  2. Des paramètres mal réglés peuvent entraîner une survente
  3. Impossible de déterminer les points d'inversion de tendance, avec un certain retard

Directions d'optimisation

  1. Optimiser le paramètre de la période ATR pour réduire les échanges de bruit au moyen de filtres
  2. Incorporer d'autres indicateurs pour déterminer le support/la résistance afin de réduire la probabilité de retracement des bénéfices
  3. Ajouter des règles de dimensionnement des positions pour limiter les pertes par transaction

Résumé

La stratégie de Supertrend Bollinger Bands intègre les forces de plusieurs indicateurs techniques et utilise un mécanisme d'arrêt dynamique pour suivre efficacement les tendances du marché. Cette stratégie hautement personnalisable s'adapte bien à différents marchés, ce qui en fait une stratégie de poursuite de la rupture recommandée.


/*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"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic


//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short)
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)

Plus de