Stratégie de trading quantitative à plusieurs niveaux basée sur la divergence de tendance des bandes de Bollinger

BB EMA SMA stdev BBDIV Trend
Date de création: 2024-12-27 15:52:41 Dernière modification: 2024-12-27 15:52:41
Copier: 4 Nombre de clics: 457
1
Suivre
1617
Abonnés

Stratégie de trading quantitative à plusieurs niveaux basée sur la divergence de tendance des bandes de Bollinger

Aperçu

Cette stratégie est un système de trading quantitatif à plusieurs niveaux basé sur la divergence des tendances des bandes de Bollinger et les changements de bande passante dynamique. Cette stratégie construit un cadre complet de prise de décision commerciale en surveillant les changements dynamiques de la largeur de la bande de Bollinger, les percées de prix et la coordination de la moyenne mobile EMA200. La stratégie adopte un mécanisme de suivi adaptatif de la volatilité, qui peut capturer efficacement les points de retournement des tendances du marché.

Principe de stratégie

Le cœur de la stratégie repose sur les éléments clés suivants :

  1. Les bandes de Bollinger sont calculées à l’aide d’une moyenne mobile sur 20 périodes et de 2 fois l’écart type
  2. Déterminez la force de la tendance en modifiant la bande passante à trois moments consécutifs
  3. Combinaison de la relation entre l’entité K-line et le rapport de bande passante pour déterminer l’efficacité de la percée
  4. Utilisation de l’EMA200 comme filtre de tendance à moyen et long terme
  5. Entrez sur le marché et prenez une position longue lorsque le prix franchit la piste supérieure et remplit les conditions d’expansion de la bande passante
  6. Lorsque le prix tombe en dessous de la bande inférieure et remplit les conditions de contraction de la bande passante, fermez la position

Avantages stratégiques

  1. Le système de signalisation est prospectif et peut détecter à l’avance les points de retournement de tendance potentiels
  2. Validation croisée de plusieurs indicateurs techniques, réduisant considérablement les faux signaux
  3. L’indicateur de taux de changement de bande passante présente une bonne adaptabilité aux fluctuations du marché
  4. La logique d’entrée et de sortie est claire et facile à mettre en œuvre par programmation
  5. Le mécanisme de contrôle des risques est parfait et peut contrôler efficacement le drawdown

Risque stratégique

  1. Des transactions fréquentes peuvent se produire sur des marchés volatils
  2. Un décalage peut se produire lorsque les tendances changent soudainement
  3. L’optimisation des paramètres comporte un risque de surapprentissage
  4. Il peut y avoir un risque de dérapage pendant les périodes de forte volatilité des marchés
  5. L’efficacité des indicateurs de bande passante doit être surveillée en temps opportun

Orientation de l’optimisation de la stratégie

  1. Présentation d’un mécanisme d’optimisation adaptatif des paramètres
  2. Ajoutez des indicateurs auxiliaires tels que le volume des transactions pour vérifier
  3. Optimiser les paramètres des conditions de stop loss et de take profit
  4. Améliorer les critères de jugement quantitatif de la force des tendances
  5. Ajouter plus de filtres d’environnement de marché

Résumer

La stratégie construit un système de trading robuste grâce à la divergence des tendances des bandes de Bollinger et aux changements de bande passante dynamique. La stratégie fonctionne bien sur les marchés tendance, mais doit encore être améliorée sur les marchés volatils et l’optimisation des paramètres. Dans l’ensemble, cette stratégie présente une bonne valeur pratique et une marge d’expansion.

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

//@version=6
strategy("BBDIV_Strategy", overlay=true)

// Inputs for Bollinger Bands
length = input.int(20, title="BB Length")
mult = input.float(2.0, title="BB Multiplier")

// Calculate Bollinger Bands
basis = ta.sma(close, length)
deviation = mult * ta.stdev(close, length)
upperBB = basis + deviation
lowerBB = basis - deviation

// Calculate Bollinger Band width
bb_width = upperBB - lowerBB
prev_width = ta.valuewhen(not na(bb_width[1]), bb_width[1], 0)
prev_prev_width = ta.valuewhen(not na(bb_width[2]), bb_width[2], 0)

// Determine BB state
bb_state = bb_width > prev_width and prev_width > prev_prev_width ? 1 : bb_width < prev_width and prev_width < prev_prev_width ? -1 : 0

// Assign colors based on BB state
bb_color = bb_state == 1 ? color.green : bb_state == -1 ? color.red : color.gray

// Highlight candles closed outside BB
candle_size = high - low
highlight_color = (candle_size > bb_width / 2 and close > upperBB) ? color.new(color.green, 50) : (candle_size > bb_width / 2 and close < lowerBB) ? color.new(color.red, 50) : na

bgcolor(highlight_color, title="Highlight Candles")

// Plot Bollinger Bands
plot(upperBB, title="Upper BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(lowerBB, title="Lower BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(basis, title="Middle BB", color=color.blue, linewidth=1, style=plot.style_line)

// Calculate EMA 200
ema200 = ta.ema(close, 200)

// Plot EMA 200
plot(ema200, title="EMA 200", color=color.orange, linewidth=2, style=plot.style_line)

// Strategy logic
enter_long = highlight_color == color.new(color.green, 50)
exit_long = highlight_color == color.new(color.red, 50)

if (enter_long)
    strategy.entry("Buy", strategy.long)

if (exit_long)
    strategy.close("Buy")

// Display profit at close
if (exit_long)
    var float entry_price = na
    var float close_price = na
    var float profit = na

    if (strategy.opentrades > 0)
        entry_price := strategy.opentrades.entry_price(strategy.opentrades - 1)
        close_price := close
        profit := (close_price - entry_price) * 100 / entry_price * 2 * 10 // Assuming 1 pip = 0.01 for XAUUSD
        label.new(bar_index, high + (candle_size * 2), str.tostring(profit, format.mintick) + " USD", style=label.style_label_up, color=color.green)