Les ressources ont été chargées... Je charge...

Stratégie de négociation filtrée à plusieurs indicateurs avec des bandes de Bollinger et des indices de cote de Woodies

Auteur:ChaoZhang est là., Date: 2024-12-27 à 15h32
Les étiquettes:BBCCI- Je vous en prie.VABATRSMATPSL

img

Résumé

Cette stratégie est un système de trading multi-indicateur combinant les bandes de Bollinger, le Woodies CCI (indice des canaux de produits de base), les moyennes mobiles (MA) et le volume sur le solde (OBV).

Principes de stratégie

La logique de base repose sur les éléments clés suivants:

  1. Utilise deux bandes de Bollinger (1x et 2x) pour construire des canaux de volatilité des prix
  2. Utilise des indicateurs CCI à 6 périodes et à 14 périodes comme filtres de signaux, nécessitant une confirmation des deux périodes
  3. Combine des moyennes mobiles sur 50 périodes et 200 périodes pour déterminer les tendances du marché
  4. Confirme les tendances du volume par OBV lissé sur 10 périodes
  5. Utilise l'ATR à 14 périodes pour les niveaux dynamiques de stop-loss et de take profit

Les avantages de la stratégie

  1. La validation croisée à plusieurs indicateurs réduit considérablement les faux signaux
  2. La combinaison des bandes de Bollinger et de l'ICC fournit un jugement précis sur la volatilité du marché
  3. Les systèmes d'AM à long et à court terme captent efficacement les principales tendances
  4. OBV confirme le soutien du volume, augmentant la fiabilité du signal
  5. Les paramètres dynamiques d'arrêt des pertes et de prise de profit s'adaptent aux différentes conditions du marché
  6. Signaux de négociation clairs avec exécution standardisée, adaptés à une mise en œuvre quantitative

Risques stratégiques

  1. Des indicateurs multiples peuvent entraîner des signaux retardés
  2. Résultats de l'analyse de risque
  3. Risque de surajustement de l'optimisation des paramètres
  4. Les positions de stop-loss peuvent ne pas être déclenchées assez rapidement en période de volatilité Mesures d'atténuation:
  • Ajustez dynamiquement les paramètres des indicateurs pour les différents cycles de marché
  • Surveiller le tirage pour le contrôle de position
  • Validation régulière des paramètres
  • Fixer des limites de perte maximale

Directions d'optimisation

  1. Mettre en place des indicateurs de volatilité pour ajuster les positions en période de forte volatilité
  2. Ajouter un filtrage de la force de tendance pour éviter les variations des transactions sur le marché
  3. Optimiser la sélection des périodes CCI pour une meilleure sensibilité du signal
  4. Améliorer la gestion des bénéfices/pertes par une prise partielle des bénéfices
  5. Mettre en œuvre un système d'alerte à l'anomalie de volume

Résumé

Il s'agit d'un système de trading complet basé sur des combinaisons d'indicateurs techniques qui améliore la précision des transactions grâce à plusieurs confirmations de signaux.


/*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!")

Relationnée

Plus de