Une stratégie de suivi de tendance multi-indicateurs combinant triple supertrend et bandes de Bollinger

Boll ST ATR SMA BB MA
Date de création: 2024-12-20 14:28:58 Dernière modification: 2024-12-20 14:28:58
Copier: 0 Nombre de clics: 460
1
Suivre
1617
Abonnés

Une stratégie de suivi de tendance multi-indicateurs combinant triple supertrend et bandes de Bollinger

Aperçu

Cette stratégie utilise une méthode de négociation combinant les bandes de Brin et les indicateurs de triple surtrend. Un système robuste de suivi de la tendance est formé par la détermination de la zone de fluctuation de la bande de Brin et la confirmation de la tendance du triple surtrend. La bande de Brin est utilisée pour identifier les fluctuations extrêmes des prix, tandis que le triple surtrend fournit une confirmation multiple de la direction de la tendance grâce à différents paramètres.

Principe de stratégie

La logique fondamentale de la stratégie comprend les éléments clés suivants :

  1. Les bandes de Brin à 20 cycles, avec un facteur de différence standard de 2,0, sont utilisées pour juger des fluctuations de prix
  2. Trois lignes de tendance supérieure sont définies avec des périodes de 10 et des paramètres de 3,0, 4,0 et 5,0 respectivement.
  3. Conditions d’entrée multiples: le prix a franchi la courbe de Brin et les trois lignes de tendance supérieure ont montré une tendance à la hausse
  4. Conditions d’entrée à l’envers: les prix sont en baisse par rapport à la courbe de Brin et les trois lignes de tendance supérieure sont en baisse
  5. Lorsque n’importe quelle ligne de tendance supérieure change de direction, la position actuelle de plage est maintenue.
  6. Utilisation de la ligne de prix intermédiaire comme référence de remplissage pour améliorer l’effet visuel

Avantages stratégiques

  1. Mécanisme de confirmation multiple: réduction des faux signaux grâce à la combinaison des bandes de Brin et des supertrends triples
  2. Une forte capacité de suivi des tendances: paramètres décroissants de l’indicateur hypertrend permettent de capturer efficacement les différentes tendances
  3. Maîtrise des risques: éliminer rapidement et contrôler les retraits en cas de changement de tendance
  4. Adaptabilité des paramètres: les paramètres de l’indicateur peuvent être optimisés en fonction des caractéristiques du marché
  5. Automatisation élevée: logique stratégique claire et mise en œuvre systématique

Risque stratégique

  1. Risque de choc: les faux signaux de rupture peuvent apparaître fréquemment dans les marchés à choc horizontal.
  2. Effets des points de glissement: les pertes de points de glissement peuvent être plus importantes pendant les périodes de forte volatilité
  3. Risque de retard: les mécanismes de confirmation multiple peuvent entraîner des retards d’admission
  4. Sensibilité des paramètres : différentes combinaisons de paramètres peuvent entraîner de grandes différences dans les performances de la stratégie
  5. Dépendance sur l’environnement du marché: les stratégies sont plus efficaces sur les marchés où la tendance est évidente

Orientation de l’optimisation de la stratégie

  1. Introduction d’indicateurs de volumes de transaction: l’efficacité des ruptures de prix est confirmée par le volume de transaction
  2. Optimisation des mécanismes de stop-loss: vous pouvez ajouter un stop-loss mobile ou un stop-loss dynamique basé sur ATR
  3. Augmentation du filtrage temporel: interdiction des transactions pendant une période donnée pour éviter les fluctuations inefficaces
  4. Ajouter un filtre de volatilité: ajuster la position ou suspendre la négociation en période de forte volatilité
  5. Mécanisme d’adaptation des paramètres de développement: paramètres d’ajustement dynamique en fonction de l’état du marché

Résumer

Il s’agit d’une stratégie de suivi de la tendance combinant les bandes de Brin et le triple hypertrend pour améliorer la fiabilité des transactions grâce à la confirmation de plusieurs indicateurs techniques. La stratégie a une forte capacité de capture de tendance et de contrôle des risques, mais il faut également tenir compte de l’impact de l’environnement du marché sur la performance de la stratégie.

Code source de la stratégie
//@version=5
strategy("Demo GPT - Bollinger + Triple Supertrend Combo", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

// -------------------------------
// User Input for Date Range
// -------------------------------
startDate = input(title="Start Date", defval=timestamp("2018-01-01 00:00:00"))
endDate   = input(title="End Date",   defval=timestamp("2069-12-31 23:59:59"))

// -------------------------------
// Bollinger Band Inputs
// -------------------------------
lengthBB = input.int(20, "Bollinger Length")
multBB   = input.float(2.0, "Bollinger Multiplier")

// -------------------------------
// Supertrend Inputs for 3 lines
// -------------------------------
// Line 1
atrPeriod1 = input.int(10, "ATR Length (Line 1)", minval = 1)
factor1    = input.float(3.0, "Factor (Line 1)", minval = 0.01, step = 0.01)

// Line 2
atrPeriod2 = input.int(10, "ATR Length (Line 2)", minval = 1)
factor2    = input.float(4.0, "Factor (Line 2)", minval = 0.01, step = 0.01)

// Line 3
atrPeriod3 = input.int(10, "ATR Length (Line 3)", minval = 1)
factor3    = input.float(5.0, "Factor (Line 3)", minval = 0.01, step = 0.01)

// -------------------------------
// Bollinger Band Calculation
// -------------------------------
basis = ta.sma(close, lengthBB)
dev   = multBB * ta.stdev(close, lengthBB)
upperBand = basis + dev
lowerBand = basis - dev

// Plot Bollinger Bands
plot(upperBand, "Upper BB", color=color.new(color.blue, 0))
plot(basis,     "Basis",    color=color.new(color.gray, 0))
plot(lowerBand, "Lower BB", color=color.new(color.blue, 0))

// -------------------------------
// Supertrend Calculation Line 1
// -------------------------------
[supertrendLine1, direction1] = ta.supertrend(factor1, atrPeriod1)
supertrendLine1 := barstate.isfirst ? na : supertrendLine1

upTrend1   = plot(direction1 < 0 ? supertrendLine1 : na, "Up Trend 1",   color = color.green, style = plot.style_linebr)
downTrend1 = plot(direction1 < 0 ? na : supertrendLine1, "Down Trend 1", color = color.red,   style = plot.style_linebr)

// -------------------------------
// Supertrend Calculation Line 2
// -------------------------------
[supertrendLine2, direction2] = ta.supertrend(factor2, atrPeriod2)
supertrendLine2 := barstate.isfirst ? na : supertrendLine2

upTrend2   = plot(direction2 < 0 ? supertrendLine2 : na, "Up Trend 2",   color = color.new(color.green, 0), style = plot.style_linebr)
downTrend2 = plot(direction2 < 0 ? na : supertrendLine2, "Down Trend 2", color = color.new(color.red, 0),   style = plot.style_linebr)

// -------------------------------
// Supertrend Calculation Line 3
// -------------------------------
[supertrendLine3, direction3] = ta.supertrend(factor3, atrPeriod3)
supertrendLine3 := barstate.isfirst ? na : supertrendLine3

upTrend3   = plot(direction3 < 0 ? supertrendLine3 : na, "Up Trend 3",   color = color.new(color.green, 0), style = plot.style_linebr)
downTrend3 = plot(direction3 < 0 ? na : supertrendLine3, "Down Trend 3", color = color.new(color.red, 0),   style = plot.style_linebr)

// -------------------------------
// Middle line for fill (used as a reference line)
// -------------------------------
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle", display = display.none)

// Fill areas for each supertrend line
fill(bodyMiddle, upTrend1,   color.new(color.green, 90), fillgaps = false)
fill(bodyMiddle, downTrend1, color.new(color.red,   90), fillgaps = false)

fill(bodyMiddle, upTrend2,   color.new(color.green, 90), fillgaps = false)
fill(bodyMiddle, downTrend2, color.new(color.red,   90), fillgaps = false)

fill(bodyMiddle, upTrend3,   color.new(color.green, 90), fillgaps = false)
fill(bodyMiddle, downTrend3, color.new(color.red,   90), fillgaps = false)

// Alerts for the first line only (as an example)
alertcondition(direction1[1] > direction1, title='Downtrend to Uptrend (Line 1)', message='Supertrend Line 1 switched from Downtrend to Uptrend')
alertcondition(direction1[1] < direction1, title='Uptrend to Downtrend (Line 1)', message='Supertrend Line 1 switched from Uptrend to Downtrend')
alertcondition(direction1[1] != direction1, title='Trend Change (Line 1)', message='Supertrend Line 1 switched trend')

// -------------------------------
// Strategy Logic
// -------------------------------
inDateRange = true

// Long Conditions
longEntryCondition = inDateRange and close > upperBand and direction1 < 0 and direction2 < 0 and direction3 < 0
longExitCondition = direction1 > 0 or direction2 > 0 or direction3 > 0

// Short Conditions
shortEntryCondition = inDateRange and close < lowerBand and direction1 > 0 and direction2 > 0 and direction3 > 0
shortExitCondition = direction1 < 0 or direction2 < 0 or direction3 < 0

// Execute Long Trades
if longEntryCondition and strategy.position_size <= 0
    strategy.entry("Long", strategy.long)

if strategy.position_size > 0 and longExitCondition
    strategy.close("Long")

// Execute Short Trades
if shortEntryCondition and strategy.position_size >= 0
    strategy.entry("Short", strategy.short)

if strategy.position_size < 0 and shortExitCondition
    strategy.close("Short")