Die Honey Trend ATR Breakout Strategie ist eine mittelfristige Breakout-Strategie, die auf dem ATR-Indikator und den Bollinger Bands für die Handelssignalgenerierung basiert. Sie überwacht hauptsächlich die Trendänderungen der Aktienkurse innerhalb einer bestimmten Breite der oberen und unteren ATR-Kanäle.
Die Strategie besteht aus drei Hauptteilen:
ATR-Kanal: Berechnen Sie den Schwankungsbereich der Aktienkurse über den ATR-Indikator und bilden Sie einen Kanal nach oben und unten innerhalb dieses Bereichs.
Bee Line: Die Mittellinie der Aktienkurse als Basislinie. Die Berechnungsmethode der Mittellinie ist: der durchschnittliche Wert der gestrigen Höchst-, Tief- und Schlusskurs.
Trendfilterung: Berechnet den Preistrend über den DMI-Indikator und setzt den Signalzyklus ein. Wenn pricesig
Die spezifische Logik für die Erzeugung von Handelssignalen ist:
Langes Signal: pricesig
Kurzsignal: pricesig
In anderen Situationen kein Handel.
Die Strategie legt auch Stop-Profit- und Stop-Loss-Bedingungen fest, um Handelsrisiken zu kontrollieren.
Die Honey Trend ATR Breakout Strategie hat folgende Vorteile:
Verwendung des ATR-Indikators zur Berechnung des Schwankungsbereichs der Aktienkurse, der dynamisch Marktveränderungen erfassen kann;
Kombinieren Sie die Mittellinie, um die seitlichen Kursentwicklungen zu bewerten, und setzen Sie die Kanal-Breakout-Handelspunkte, um Höchststände zu vermeiden und Tiefstände zu töten.
Der DMI-Indikator wird verwendet, um den Trend zu bestimmen und gegen den Trend zu handeln, wodurch die Gewinnrate verbessert wird.
Festlegung von Stop-Profit- und Stop-Loss-Bedingungen zur Kontrolle des Risikos des einheitlichen Handels;
Die Strategieparameter sind flexibel genug, um die Strategie durch Anpassung der Kanalbreite, des ATR-Zyklus und anderer Faktoren zu optimieren.
Die Strategie birgt auch einige Risiken:
Der mittelfristige Handel hat relativ große Schwankungen und hohe Risiken.
Die Berechnung des ATR-Kanalbereichs kann ungenau sein, wenn die Aktienkurse stark schwanken, was leicht zu falschen Geschäften führt.
Der DMI-Indikator kann auch bei der Beurteilung des Trends Fehler machen und somit die Genauigkeit der Handelssignale beeinträchtigen.
Als Reaktion auf die oben genannten Risiken können Parameter wie der ATR-Kanal angepasst und die Signalzyklen zur Optimierung und Verbesserung erhöht werden.
Die Strategie kann in folgenden Aspekten optimiert werden:
Anpassung der ATR-Kanalbreite durch Anpassung des AtrDivisor nach oben oder unten, um den Kanalbereich zu komprimieren oder zu erweitern.
Einstellen des ATR-Lookback-Zyklusparameters, um die Empfindlichkeit des Kanals gegenüber jüngsten Schwankungen zu ändern.
Anpassung des Trendsignalzyklusparameters zur Verbesserung der Genauigkeit von bullischen und bärischen Trendurteilen.
Hinzufügen anderer Indikatoren für die Mehrfaktorüberprüfung zur Verbesserung der Signalqualität.
Optimierung der Stop-Profit- und Stop-Loss-Algorithmen zur Verbesserung der Risikokontrolle.
Die Honey Trend ATR Breakout Strategie integriert die Analyse von Kursschwankungsbereich und Trendbeurteilungsindikatoren. Während sie Markthotspots erfasst, kontrolliert sie auch Handelsrisiken. Es ist eine flexible und anpassungsfähige quantitative Strategie. Diese Strategie kann durch Parameteranpassung und Signaloptimierung kontinuierlich verbessert werden, mit breiten Anwendungsperspektiven.
/*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)