La stratégie de rupture de l'ATR de tendance de miel est une stratégie de rupture à moyen terme basée sur l'indicateur ATR et les bandes de Bollinger pour la génération de signaux de trading. Elle surveille principalement les changements de tendance des cours des actions dans une certaine largeur des canaux ATR supérieur et inférieur.
La stratégie est composée de trois parties principales:
Chaîne ATR: Calcule la plage de fluctuation des cours des actions à l'aide de l'indicateur ATR et forme un canal vers le haut et vers le bas dans cette plage.
Ligne d'abeille: Prenez comme référence la ligne médiane des cours des actions.
Filtrage de tendance: Calcule la tendance des prix à travers l'indicateur DMI et définit un cycle de signal.
La logique spécifique pour générer des signaux de trading est la suivante:
Signal long: pricesig
Signal court: pricesig
Pas de négociation dans d'autres situations.
La stratégie fixe également des conditions de stop profit et de stop loss pour contrôler les risques de négociation.
La stratégie de rupture de la tendance de miel ATR présente les avantages suivants:
Utiliser l'indicateur ATR pour calculer la fourchette de fluctuation des cours des actions, qui peut capturer dynamiquement les variations du marché;
Combiner la ligne médiane pour évaluer les mouvements latéraux des cours des actions et définir les points de négociation de rupture du canal pour éviter de poursuivre les hauts et de tuer les bas;
L'indicateur DMI est utilisé pour déterminer la tendance et éviter de négocier contre la tendance, améliorant ainsi le taux de gain;
Définir des conditions d'arrêt des bénéfices et de l'arrêt des pertes pour contrôler le risque du commerce unique;
Les paramètres de stratégie sont suffisamment souples pour optimiser la stratégie en ajustant la largeur du canal, le cycle ATR et d'autres facteurs.
La stratégie comporte également certains risques:
Les transactions à moyen terme présentent des fluctuations relativement importantes et des risques élevés.
Le calcul de la fourchette de canaux ATR peut être inexact lorsque les cours des actions fluctuent fortement, ce qui conduit facilement à des transactions erronées.
L'indicateur DMI peut également commettre des erreurs dans le jugement de la tendance, affectant ainsi l'exactitude des signaux de négociation.
En réponse aux risques susmentionnés, des paramètres tels que le canal ATR peuvent être ajustés et les cycles de signal peuvent être augmentés pour l'optimisation et l'amélioration.
La stratégie peut être optimisée dans les aspects suivants:
Ajustez la largeur du canal ATR en modifiant l'atrDivisor vers le haut ou vers le bas pour comprimer ou élargir la plage de canaux.
Ajustez le paramètre du cycle de rétrospective ATR pour modifier la sensibilité du canal aux fluctuations récentes.
Ajuster le paramètre du cycle de signal de tendance pour améliorer la précision des jugements de tendance haussière et baissière.
Ajouter d'autres indicateurs pour la vérification multifactorielle afin d'améliorer la qualité du signal.
Optimiser les algorithmes de stop profit et stop loss pour améliorer le contrôle des risques.
La stratégie de rupture de la tendance de miel ATR intègre l'analyse de la plage de fluctuation des prix et des indicateurs de jugement de tendance. Tout en capturant les points chauds du marché, elle contrôle également les risques commerciaux. C'est une stratégie quantitative flexible et adaptable. Cette stratégie peut être continuellement améliorée grâce à l'ajustement des paramètres et à l'optimisation du signal, avec de larges perspectives d'application.
/*backtest start: 2023-11-01 00:00:00 end: 2023-11-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="Strategy - Bobo PATR Swing", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000) // === STRATEGY RELATED INPUTS AND LOGIC === PivottimeFrame = input(title="Pivot Timeframe", defval="D") ATRSDtimeFrame = input(title="ATR Band Timeframe (Lower timeframe = wider bands)", defval="D") len = input(title="ATR lookback (Lower = bands more responsive to recent price action)", defval=13) myatr = atr(len) dailyatr = request.security(syminfo.tickerid, ATRSDtimeFrame, myatr[1]) atrdiv = input(title="ATR divisor (Lower = wider bands)", type=float, defval=2) pivot0 = (high[1] + low[1] + close[1]) / 3 pivot = request.security(syminfo.tickerid, PivottimeFrame, pivot0) upperband1 = (dailyatr / atrdiv) + pivot lowerband1 = pivot - (dailyatr / atrdiv) middleband = pivot // == TREND CALC === i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually i2=input(20, "Slow Period", minval=1) i3=input(5, "Fast Period", minval=1) i4=input(3, "Smoothing Period", minval=1) i5=input(4, "Signal Period", minval=1) i6=input(50, "Extreme Value", minval=1) hiDif = high - high[1] loDif = low[1] - low uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0 dDM = loDif > hiDif and loDif > 0 ? loDif : 0 ATR = rma(tr(true), i1) DIu = 100 * rma(uDM, i1) / ATR DId = 100 * rma(dDM, i1) / ATR HLM2 = DIu - DId DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) / ema(ema(ema(abs(HLM2), i2), i3), i4) signal = ema(DTI, i5) // === RISK MANAGEMENT INPUTS === inpTakeProfit = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0) inpStopLoss = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na // === STRATEGY - LONG POSITION EXECUTION === enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3]) exitLong = (high > middleband) strategy.entry(id = "Long", long = true, when = enterLong) strategy.close(id = "Long", when = exitLong) // === STRATEGY - SHORT POSITION EXECUTION === enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3]) exitShort = (low < middleband) strategy.entry(id = "Short", long = false, when = enterShort) strategy.close(id = "Short", when = exitShort) // === STRATEGY RISK MANAGEMENT EXECUTION === strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss) // === CHART OVERLAY === plot(upperband1, color=#C10C00, linewidth=3) plot(lowerband1, color=#23E019, linewidth=3) plot(middleband, color=#00E2E2, linewidth=3) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)