Bandes de Bollinger combinées à des indicateurs multiples Woody CCI pour filtrer les signaux de trading

BB CCI MA OBV ATR SMA TP SL
Date de création: 2024-12-27 15:32:30 Dernière modification: 2024-12-27 15:32:30
Copier: 0 Nombre de clics: 416
1
Suivre
1617
Abonnés

Bandes de Bollinger combinées à des indicateurs multiples Woody CCI pour filtrer les signaux de trading

Aperçu

La stratégie est un système de trading multi-indicateurs qui combine les bandes de Bollinger, le CCI Woodies, les moyennes mobiles (MA) et le volume en équilibre (OBV). La stratégie utilise les bandes de Bollinger pour fournir une plage de volatilité du marché, utilise l’indicateur CCI pour filtrer les signaux de trading, puis combine le système de moyenne mobile et la confirmation du volume de trading pour trader lorsque la tendance du marché est claire. Dans le même temps, utilisez l’ATR pour définir dynamiquement les positions de take-profit et de stop-loss afin de contrôler efficacement les risques.

Principe de stratégie

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

  1. Utilisez deux bandes de Bollinger d’écart type (1x et 2x) pour créer un canal de fluctuation des prix et fournir une référence pour la plage de fluctuation du marché
  2. L’utilisation d’indicateurs CCI à 6 et 14 périodes comme filtres de signal nécessite que le CCI des deux périodes soit confirmé dans la même direction
  3. Combinez les moyennes mobiles sur 50 et 200 périodes pour déterminer les tendances du marché et générer des signaux de trading initiaux lorsque les moyennes mobiles se croisent
  4. La tendance du volume est confirmée par le lissage sur 10 périodes de l’indicateur OBV.
  5. Utilisez l’ATR sur 14 périodes pour définir de manière dynamique le take-profit et le stop-loss. Pour les positions longues, le take-profit est égal à 2 fois l’ATR et le stop-loss à 1 fois l’ATR. Pour les positions courtes, c’est l’inverse.

Avantages stratégiques

  1. La validation croisée de plusieurs indicateurs réduit considérablement la probabilité de faux signaux
  2. La combinaison des bandes de Bollinger et du CCI fournit une évaluation précise de la volatilité du marché
  3. Le système de moyenne mobile à long terme et à court terme saisit efficacement la tendance générale
  4. OBV confirme le support du volume et améliore la fiabilité du signal
  5. Paramètres dynamiques de stop-profit et de stop-loss pour s’adapter aux différents environnements de marché
  6. Les signaux de trading sont clairs, l’exécution est standard et ils sont faciles à quantifier et à mettre en œuvre.

Risque stratégique

  1. Plusieurs indicateurs peuvent provoquer un décalage du signal et manquer le meilleur moment d’entrée
  2. Les stop loss peuvent être déclenchés fréquemment sur des marchés volatils
  3. L’optimisation des paramètres comporte un risque de surapprentissage
  4. Le stop loss peut ne pas être opportun en période de forte volatilité Contre-mesures :
  • Ajuster dynamiquement les paramètres de l’indicateur en fonction des différents cycles du marché
  • Surveillance en temps réel du retracement et du contrôle de position
  • Vérifiez régulièrement la validité des paramètres
  • Fixer une limite de perte maximale

Orientation de l’optimisation de la stratégie

  1. Introduire des indicateurs de volatilité du marché pour ajuster les positions pendant les périodes de forte volatilité
  2. Ajoutez un filtre de force de tendance pour éviter de négocier sur des marchés volatils
  3. Optimiser la sélection du cycle CCI et améliorer la sensibilité du signal
  4. Améliorer le mécanisme de stop-profit et de stop-loss, en envisageant par exemple de prendre des bénéfices par lots
  5. Ajout d’un mécanisme d’avertissement de volume de transactions anormal

Résumer

Il s’agit d’un système de trading complet basé sur une combinaison d’indicateurs techniques, qui améliore la précision du trading grâce à plusieurs confirmations de signaux. La stratégie est raisonnablement conçue, le risque est correctement contrôlé et elle présente une bonne valeur d’application pratique. Il est recommandé d’utiliser des positions conservatrices pour les tests en trading réel et d’optimiser en permanence les paramètres en fonction des conditions du marché.

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(shorttitle="BB Debug + Woodies CCI Filter", title="Debug Buy/Sell Signals with Woodies CCI Filter", overlay=true)

// Input Parameters
length = input.int(20, minval=1, title="BB MA Length")
src = input.source(close, title="BB Source")
mult1 = input.float(1.0, minval=0.001, maxval=50, title="BB Multiplier 1 (Std Dev 1)")
mult2 = input.float(2.0, minval=0.001, maxval=50, title="BB Multiplier 2 (Std Dev 2)")
ma_length = input.int(50, minval=1, title="MA Length")
ma_long_length = input.int(200, minval=1, title="Long MA Length")
obv_smoothing = input.int(10, minval=1, title="OBV Smoothing Length")
atr_length = input.int(14, minval=1, title="ATR Length") // ATR Length for TP/SL

// Bollinger Bands
basis = ta.sma(src, length)
dev1 = mult1 * ta.stdev(src, length)
dev2 = mult2 * ta.stdev(src, length)

upper_1 = basis + dev1
lower_1 = basis - dev1
upper_2 = basis + dev2
lower_2 = basis - dev2

plot(basis, color=color.blue, title="BB MA")
p1 = plot(upper_1, color=color.new(color.green, 80), title="BB Upper 1")
p2 = plot(lower_1, color=color.new(color.green, 80), title="BB Lower 1")
p3 = plot(upper_2, color=color.new(color.red, 80), title="BB Upper 2")
p4 = plot(lower_2, color=color.new(color.red, 80), title="BB Lower 2")

fill(p1, p2, color=color.new(color.green, 90))
fill(p3, p4, color=color.new(color.red, 90))

// Moving Averages
ma_short = ta.sma(close, ma_length)
ma_long = ta.sma(close, ma_long_length)
plot(ma_short, color=color.orange, title="MA Short")
plot(ma_long, color=color.yellow, title="MA Long")

// OBV and Smoothing
obv = ta.cum(ta.change(close) > 0 ? volume : ta.change(close) < 0 ? -volume : 0)
obv_smooth = ta.sma(obv, obv_smoothing)

// Debugging: Buy/Sell Signals
debugBuy = ta.crossover(close, ma_short)
debugSell = ta.crossunder(close, ma_short)

// Woodies CCI
cciTurboLength = 6
cci14Length = 14
cciTurbo = ta.cci(src, cciTurboLength)
cci14 = ta.cci(src, cci14Length)

// Filter: Only allow trades when CCI confirms the signal
cciBuyFilter = cciTurbo > 0 and cci14 > 0
cciSellFilter = cciTurbo < 0 and cci14 < 0

finalBuySignal = debugBuy and cciBuyFilter
finalSellSignal = debugSell and cciSellFilter

// Plot Debug Buy/Sell Signals
plotshape(finalBuySignal, title="Filtered Buy", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.normal)
plotshape(finalSellSignal, title="Filtered Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.normal)

// Change candle color based on filtered signals
barcolor(finalBuySignal ? color.lime : finalSellSignal ? color.red : na)

// ATR for Stop Loss and Take Profit
atr = ta.atr(atr_length)
tp_long = close + 2 * atr  // Take Profit for Long = 2x ATR
sl_long = close - 1 * atr  // Stop Loss for Long = 1x ATR
tp_short = close - 2 * atr // Take Profit for Short = 2x ATR
sl_short = close + 1 * atr // Stop Loss for Short = 1x ATR

// Strategy Execution
if (finalBuySignal)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", limit=tp_long, stop=sl_long)

if (finalSellSignal)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", limit=tp_short, stop=sl_short)

// Check for BTC/USDT pair
isBTCUSDT = syminfo.ticker == "BTCUSDT"

// Add alerts only for BTC/USDT
alertcondition(isBTCUSDT and finalBuySignal, title="BTCUSDT Buy Signal", message="Buy signal detected for BTCUSDT!")
alertcondition(isBTCUSDT and finalSellSignal, title="BTCUSDT Sell Signal", message="Sell signal detected for BTCUSDT!")