Stratégie quantitative améliorée de rupture de tendance des bandes de Bollinger combinée à un système de filtrage de momentum d'indicateur

BB RSI EMA ATR RR
Date de création: 2024-12-12 14:55:37 Dernière modification: 2024-12-12 14:55:37
Copier: 3 Nombre de clics: 371
1
Suivre
1617
Abonnés

Stratégie quantitative améliorée de rupture de tendance des bandes de Bollinger combinée à un système de filtrage de momentum d’indicateur

Aperçu

Cette stratégie est un système de trading quantitatif avancé qui combine les bandes de Brin, l’indicateur RSI et le filtre de tendance EMA à 200 cycles. La stratégie capture les opportunités de rupture à haute probabilité dans la direction de la tendance grâce à la coordination de plusieurs indicateurs techniques, tout en filtrant efficacement les faux signaux dans les marchés en crise.

Principe de stratégie

La logique de base de la stratégie repose sur les trois niveaux suivants:

  1. Signal de rupture de la ceinture de Brin: Utilisation de la ceinture de Brin pour la montée et la descente de la trajectoire comme canal de fluctuation. La rupture de la trajectoire supérieure est considérée comme un signal de multiplication et la rupture de la trajectoire inférieure comme un signal de rupture.
  2. Confirmation de la dynamique RSI: le RSI est au-dessus de 50 pour confirmer la dynamique plus forte et au-dessous de 50 pour confirmer la dynamique négative, afin d’éviter de négocier sans tendance.
  3. Filtre de tendance EMA: utilisez l’EMA à 200 cycles pour déterminer la tendance principale et ouvrez une position uniquement dans la direction de la tendance. Le prix est en hausse au-dessus de l’EMA et en baisse en dessous.

La confirmation de la transaction doit répondre aux conditions suivantes:

  • Deux lignes K consécutives en état de rupture
  • Les transactions sont supérieures à la moyenne des 20 cycles.
  • Stop-loss dynamique calculé sur la base des valeurs ATR
  • L’objectif de profit est basé sur un rapport risque/rendement de 1,5 fois

Avantages stratégiques

  1. Filtrage synchrone de multiples indicateurs techniques, amélioration significative de la qualité du signal
  2. Un mécanisme de gestion de position dynamique qui s’adapte aux fluctuations du marché
  3. Des mécanismes stricts de confirmation des transactions, efficaces pour réduire les fausses alertes
  4. Système complet de contrôle des risques, y compris le stop-loss dynamique et le rapport de risque/bénéfice fixe
  5. Un espace d’optimisation de paramètres flexible qui s’adapte à différents environnements de marché

Risque stratégique

  1. Une optimisation excessive des paramètres peut conduire à un surapprentissage
  2. La forte volatilité du marché pourrait déclencher des arrêts fréquents
  3. La crise des marchés pourrait entraîner des pertes continues
  4. Le signal est en retard à un tournant de tendance
  5. Des signaux contradictoires peuvent apparaître entre les indicateurs techniques

Suggestions de contrôle des risques :

  • Une discipline stricte contre les pertes
  • Contrôler le risque d’une seule transaction
  • Retour régulier pour vérifier la validité des paramètres
  • En plus de l’analyse fondamentale
  • Évitez les transactions excessives

Orientation de l’optimisation de la stratégie

  1. La mise en place d’indicateurs techniques de mutuelle vérification
  2. Développement de mécanismes d’optimisation des paramètres d’adaptation
  3. Ajout d’un indicateur de sentiment du marché
  4. Optimisation des mécanismes de confirmation des transactions
  5. Développer un système de gestion de position plus flexible

Les principales idées d’optimisation:

  • Paramètres d’ajustement en fonction de la dynamique des cycles de marché
  • Ajout de conditions de filtrage des transactions
  • Optimisation du rapport risque/bénéfice
  • Amélioration des mécanismes de couverture
  • Des systèmes de reconnaissance de signaux plus intelligents

Résumer

La stratégie a été développée en utilisant une combinaison organique d’indicateurs techniques tels que les bandes de Brin, le RSI et l’EMA pour construire un système de négociation complet. Le système a démontré une forte valeur d’application dans le monde réel grâce à un contrôle strict des risques et à un espace d’optimisation flexible des paramètres, tout en garantissant la qualité des transactions.

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

//@version=5
strategy("Improved Bollinger Breakout with Trend Filtering", overlay=true)

// === Inputs ===
length = input(20, title="Bollinger Bands Length", tooltip="The number of candles used to calculate the Bollinger Bands. Higher values smooth the bands, lower values make them more reactive.")
mult = input(2.0, title="Bollinger Bands Multiplier", tooltip="Controls the width of the Bollinger Bands. Higher values widen the bands, capturing more price movement.")
rsi_length = input(14, title="RSI Length", tooltip="The number of candles used to calculate the RSI. Shorter lengths make it more sensitive to recent price movements.")
rsi_midline = input(50, title="RSI Midline", tooltip="Defines the midline for RSI to confirm momentum. Higher values make it stricter for bullish conditions.")
risk_reward_ratio = input(1.5, title="Risk/Reward Ratio", tooltip="Determines the take-profit level relative to the stop-loss.")
atr_multiplier = input(1.5, title="ATR Multiplier for Stop-Loss", tooltip="Defines the distance of the stop-loss based on ATR. Higher values set wider stop-losses.")
volume_filter = input(true, title="Enable Volume Filter", tooltip="If enabled, trades will only execute when volume exceeds the 20-period average.")
trend_filter_length = input(200, title="Trend Filter EMA Length", tooltip="The EMA length used to filter trades based on the market trend.")
trade_direction = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"], tooltip="Choose whether to trade only Long, only Short, or Both directions.")
confirm_candles = input(2, title="Number of Confirming Candles", tooltip="The number of consecutive candles that must meet the conditions before entering a trade.")

// === Indicator Calculations ===
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper_band = basis + dev
lower_band = basis - dev
rsi_val = ta.rsi(close, rsi_length)
atr_val = ta.atr(14)
vol_filter = volume > ta.sma(volume, 20)
ema_trend = ta.ema(close, trend_filter_length)

// === Helper Function for Confirmation ===
confirm_condition(cond, lookback) =>
    count = 0
    for i = 0 to lookback - 1
        count += cond[i] ? 1 : 0
    count == lookback

// === Trend Filter ===
trend_is_bullish = close > ema_trend
trend_is_bearish = close < ema_trend

// === Long and Short Conditions with Confirmation ===
long_raw_condition = close > upper_band * 1.01 and rsi_val > rsi_midline and (not volume_filter or vol_filter) and trend_is_bullish
short_raw_condition = close < lower_band * 0.99 and rsi_val < rsi_midline and (not volume_filter or vol_filter) and trend_is_bearish

long_condition = confirm_condition(long_raw_condition, confirm_candles)
short_condition = confirm_condition(short_raw_condition, confirm_candles)

// === Trade Entry and Exit Logic ===
if long_condition and (trade_direction == "Long" or trade_direction == "Both")
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop=close - (atr_multiplier * atr_val), limit=close + (atr_multiplier * risk_reward_ratio * atr_val))

if short_condition and (trade_direction == "Short" or trade_direction == "Both")
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop=close + (atr_multiplier * atr_val), limit=close - (atr_multiplier * risk_reward_ratio * atr_val))

// === Plotting ===
plot(upper_band, color=color.green, title="Upper Band")
plot(lower_band, color=color.red, title="Lower Band")
plot(basis, color=color.blue, title="Basis")
plot(ema_trend, color=color.orange, title="Trend Filter EMA")