Stratégie de stop loss de suivi dynamique intelligent à plusieurs niveaux basée sur les bandes de Bollinger et l'ATR

BB ATR MA SMA EMA SMMA WMA VWMA SD
Date de création: 2024-12-11 14:52:24 Dernière modification: 2024-12-11 14:52:24
Copier: 2 Nombre de clics: 363
1
Suivre
1617
Abonnés

Stratégie de stop loss de suivi dynamique intelligent à plusieurs niveaux basée sur les bandes de Bollinger et l’ATR

Aperçu

La stratégie est un système de trading intelligent basé sur les indices Brin et ATR, combiné à un mécanisme de stop-loss à plusieurs niveaux. La stratégie est principalement basée sur l’identification des signaux de retour à proximité de la trajectoire de descente de Brin.

Principe de stratégie

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

  1. Conditions d’entrée: il faut que le ruban rouge touche la voie de descente de la ceinture de Brin et qu’il apparaisse un ruban vert, ce qui est généralement un signe d’un possible signal de retour.
  2. Sélection des moyennes mobiles: plusieurs types de moyennes mobiles sont pris en charge (SMA, EMA, SMMA, WMA, VWMA) et 20 cycles de SMA sont utilisés par défaut.
  3. Paramètre de la bande de Brin: Utilisez 1,5 fois l’écart-type comme bande passante, ce qui est un réglage plus conservateur que le 2 fois l’écart-type traditionnel.
  4. Le mécanisme d’arrêt: un objectif de profit initial de 20%.
  5. Le mécanisme de stop-loss: mise en place d’une garantie de stop-loss fixe de 12%
  6. La perte de suivi dynamique:
    • Activation de l’ATR pour suivre les arrêts de perte lorsque le prix atteint le niveau de profit cible
    • Arrêt de suivi ATR dynamique après contact de la ceinture Brin sur la voie
    • Adaptation dynamique de l’arrêt de la trace avec ATR

Avantages stratégiques

  1. Le contrôle des risques à plusieurs niveaux:
    • Capital de couverture du stop-loss fixe
    • Suivi dynamique des pertes de blocage des bénéfices
    • La suspension dynamique déclenchée par la ceinture de Brin offre une protection supplémentaire
  2. Les options de moyennes mobiles flexibles permettent aux stratégies de s’adapter à différentes conditions de marché
  3. Le stop tracking dynamique combiné avec l’indicateur ATR peut être automatiquement ajusté en fonction de la volatilité du marché, évitant ainsi les sorties prématurées.
  4. Les signaux entrants combinés avec la morphologie des prix et les indicateurs techniques améliorent la fiabilité des signaux
  5. Prise en charge de la gestion des positions et de la configuration des coûts de transaction, plus proche de l’environnement de transaction réel

Risque stratégique

  1. La volatilité rapide des marchés peut entraîner des transactions fréquentes et augmenter les coûts des transactions
  2. Un stop-loss fixe de 12% peut être trop faible dans certains marchés très volatils
  3. Les signaux de courbes de Brin peuvent produire de faux signaux dans les marchés tendanciels
  4. Les arrêts de suivi ATR peuvent entraîner des retraits plus importants en cas de forte volatilité. Mesures d’atténuation :
  • Il est recommandé d’utiliser une plus grande période de temps (de 30 minutes à 1 heure)
  • Le taux de rupture peut être ajusté en fonction des caractéristiques de la variété
  • Envisagez d’ajouter des filtres de tendance pour réduire les faux signaux
  • Adaptation dynamique du multiplicateur ATR à différentes conditions de marché

Orientation de l’optimisation de la stratégie

  1. Optimisation de l’entrée:
  • Ajouter un mécanisme de confirmation du volume des transactions
  • Ajout d’un filtre à signaux pour l’indicateur de force de tendance
  • Considérer l’ajout d’une aide à la détermination de la dynamique
  1. Optimisation du stop-loss:
  • Modifier le stop fixe en stop dynamique basé sur l’ATR
  • Développement d’algorithmes d’arrêt de perte adaptés
  • Adaptation de la distance de rupture en fonction de la dynamique de la volatilité
  1. L’optimisation des moyennes mobiles:
  • Test de différentes combinaisons de cycles
  • Une approche du cycle d’adaptation
  • Considérez l’utilisation du comportement des prix comme alternative à la moyenne mobile
  1. Optimisation de la gestion des positions:
  • Développer un système de gestion de position basé sur la volatilité
  • Mettre en place un mécanisme de création et de réduction de positions par lots
  • Ajout de contrôles de risque

Résumer

La stratégie utilise un système de négociation à plusieurs niveaux via les indices Brin Belt et ATR, et utilise une méthode de gestion dynamique pour l’entrée, l’arrêt des pertes et la clôture des gains. L’avantage de la stratégie réside dans son système de contrôle des risques parfait et sa capacité à s’adapter aux fluctuations du marché.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Demo GPT - Bollinger Bands Strategy with Tightened Trailing Stops", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

// Input settings
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = 1.5 // Standard deviation multiplier set to 1.5
offset = input.int(0, "Offset", minval=-500, maxval=500)
atrMultiplier = input.float(1.0, title="ATR Multiplier for Trailing Stop", minval=0.1) // ATR multiplier for trailing stop

// Time range filters
start_date = input(timestamp("2018-01-01 00:00"), title="Start Date")
end_date = input(timestamp("2069-12-31 23:59"), title="End Date")
in_date_range = true

// Moving average function
ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Calculate Bollinger Bands
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// ATR Calculation
atr = ta.atr(length) // Use ATR for trailing stop adjustments

// Plotting
plot(basis, "Basis", color=#2962FF, offset=offset)
p1 = plot(upper, "Upper", color=#F23645, offset=offset)
p2 = plot(lower, "Lower", color=#089981, offset=offset)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))

// Candle color detection
isGreen = close > open
isRed = close < open

// Flags for entry and exit conditions
var bool redTouchedLower = false
var float targetPrice = na
var float stopLossPrice = na
var float trailingStopPrice = na

if in_date_range
    // Entry Logic: First green candle after a red candle touches the lower band
    if close < lower and isRed
        redTouchedLower := true
    if redTouchedLower and isGreen
        strategy.entry("Long", strategy.long)
        targetPrice := close * 1.2       // Set the target price to 20% above the entry price
        stopLossPrice := close * 0.88   // Set the stop loss to 12% below the entry price
        trailingStopPrice := na         // Reset trailing stop on entry
        redTouchedLower := false

    // Exit Logic: Trailing stop after 20% price increase
    if strategy.position_size > 0 and not na(targetPrice) and close >= targetPrice
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop after 20% increase
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop After 20% Increase")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Stop Loss: Exit if the price drops 12% below the entry price
    if strategy.position_size > 0 and not na(stopLossPrice) and close <= stopLossPrice
        strategy.close("Long", comment="Stop Loss Triggered")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Trailing Stop: Activate after touching the upper band
    if strategy.position_size > 0 and close >= upper and isGreen
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop Triggered")
        trailingStopPrice := na // Reset trailing stop
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price