Diese Strategie baut einen Preiskanal auf der Grundlage des Bollinger Bands-Indikators und des Momentum Oscillating Moving Average-Indikators auf und erzeugt Handelssignale, wenn der Preis die obere oder untere Grenze des Kanals durchbricht.
Die Strategie baut einen Preiskanal mit dem Bollinger Mittelfeld und dem Momentum Oscillating Moving Average auf. Das Mittelfeld nimmt das 21-Perioden-Bollinger Mittelfeld an. Die oberen und unteren Bänder dehnen sich jeweils für einen Prozentbereich nach oben und unten. Der Momentum Oscillating Moving Average dehnt sich oder schrumpft in der Nähe von Überkauf- oder Überverkaufsniveaus basierend auf dem Mittelfeld. Wenn der Preis durch das obere Band bricht, gehen Sie lang. Wenn der Preis durch das untere Band bricht, gehen Sie kurz.
Insbesondere wird das mittlere Bollingerband wie folgt berechnet:
Middle Band = Moving Average of N-period closing price
Der obere und der untere Band werden wie folgt berechnet:
Upper Band = Middle Band + WidthDev * N-period Bollinger standard deviation
Lower Band = Middle Band - WidthDev * N-period Bollinger standard deviation
Wo WidthDev den erweiterten Prozentsatzbereich nach oben und unten darstellt.
Der Momentum Oscillating Moving Average dehnt sich nach bestimmten Regeln auf der Grundlage des mittleren Bandes aus oder schrumpft. Wenn der Markt überkauft oder überverkauft wird, erstreckt er sich weiter weg vom mittleren Band, um mehr Gelegenheiten zu bieten, lang oder kurz zu gehen. Wenn sich der Markt beruhigt, schrumpft er in Richtung des mittleren Bandes.
Zusammenfassend beschreibt diese Strategie einen Preiskanal mit Bollinger Bands und bestimmt den Eintrittszeitpunkt mit dem Momentum Oscillating Moving Average, um Breakout-Handel zu realisieren.
Die Marktvolatilität spiegelt sich wider Bollinger-Bänder können die Marktvolatilität und sich verändernden Trends in Echtzeit widerspiegeln.
Reduziert falsche Signale Der Stretching-Effekt des Momentum Oscillating Moving Average kann die falschen Signale, die durch Bollinger Bands erzeugt werden, effektiv reduzieren.
Zeitgemäßer Trendwechsel Die Überschneidung der oberen und unteren BB-Bänder und des Momentum Oscillating Moving Average bietet vorteilhafte Zeiten und Preise für die Erzeugung von Handelssignalen, die wichtige Bullen- und Bärenanpassungen effektiv erfassen und Trendumkehrungen rechtzeitig erfassen können.
Falsche BB-Parameter Die falsche Einstellung von BB-Parametern wie Berechnungszeit und Standardabweichungsmultiplikator kann zu einem zu breiten oder zu engen Abstand zwischen den Bands führen, was zu übermäßigen falschen Signalen führt und die Stabilität der Strategie beeinträchtigt.
Übermäßige Schwingungsamplitude Eine zu hohe Schwingungsamplitude des Schwingenden Durchschnitts des Momentums kann dazu führen, dass die Stop-Loss-Punkte zu weit entfernt sind, was das Verlustrisiko erhöht.
Verzögerte Umkehrung
Wenn der Markt schwingend oder trendlos ist, können die Handelssignale von BB und Momentum Oscillating Moving Average verzögert sein und die Preisänderungen nicht zeitlich widerspiegeln, was zu einem verzögerten Umkehrrisiko führt.
Optimierung der BB-Parameter Testen Sie verschiedene Perioden, Standard-Abweichungs-Multiplikatoren, um optimale Parameterkombinationen zu finden, die eine bessere Signalfrequenz und weniger falsche Signale liefern.
Optimieren Sie die Parameter des Schwingungsmomentums Verschiedene Schwingungsamplitudes und -perioden testen, um Parameter zu finden, die Trends besser erfassen und die Signalverzögerung reduzieren.
Filterbedingungen hinzufügen Hinzufügen von Filtern wie Handelsvolumen basierend auf Crossover-Signale, um ineffiziente Handelssignale auszuschließen.
Kombination von Strategien Diese Strategie mit anderen Stop-Loss-Strategien oder Strategien des maschinellen Lernens kombinieren, um Risiken weiter zu kontrollieren und die Stabilität zu verbessern.
Diese Strategie kombiniert die Stärken von adaptiven Bollinger Bands und Momentum Oscillating Moving Average und erreicht eine Integration von Trendfolgen und Trendumkehrungen. Durch das Ausgleichen von Marktvolatilität und Handelssignalflexibilität realisiert sie einen stabilen und effektiven Breakout-Handel. Parameteroptimierung und Risikokontrolle sind auch entscheidend, um je nach unterschiedlichen Marktumgebungen zu testen und anzupassen.
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Hull Cloud v2 by SEASIDE420 strategy("Hull Moving Average Cloud v2", shorttitle="hull_cloud_v2", overlay=true, commission_type=strategy.commission.percent, commission_value=0.075, default_qty_type=strategy.percent_of_equity, max_bars_back=200, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) hullperiod=input(title="HullMA Period",defval=210, minval=1) Width=input(title="Cloud Width",defval=200, minval=2) price=input(ohlc4,title="Price data") FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2017, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => true n2ma=2*wma(price,round(hullperiod/2)) nma=wma(price,hullperiod) diff=n2ma-nma sqn=round(sqrt(hullperiod)) n2ma1=2*wma(price[1],round(hullperiod/2)) nma1=wma(price[1],hullperiod) diff1=n2ma1-nma1 n1=wma(diff,sqn) n2=wma(diff1,sqn) Hull_Line=n1-n1[1]/n2[1] Hull_retracted=if(n1>n2) Hull_retracted=Hull_Line-Width else Hull_retracted=Hull_Line+Width c1=(Hull_retracted*n1)/price[1] c2=(Hull_retracted*n2)/price[1] c4=c1>c2?green:red c2p=plot(c2, color=black, linewidth=1) c3p=plot(price, color=black, linewidth=1) fill(c3p, c2p, color=c4, transp=75) plot(cross(c1, c2) ? c1 : na, style = circles,color=c4, linewidth = 4) if (price<c2) strategy.close("BUY", when=window()) if (price>c2) strategy.close("SELL", when=window()) if (price[1]>c2 and price[1]>c1) strategy.entry("BUY",strategy.long, when=window()) if (price[1]<c1 and price[1]<c2) strategy.entry("SELL",strategy.short, when=window())// /L'-, // ,'-. ` ```` / L '-, // . _,--dMMMM\ ` ` ` '`.. / '-, // : _,--, )MMMMMMMMM),. ` ,<> /_ '-,' // ; ___,--. \MM( `-' )M//MM\ ,',.; .-'* ; .' // | \MMMMMM) \MM\ ,dM//MMM/ ___ < ,; `. )`--' / // | \MM()M MMM)__ /MM(/MP' ___, \ \ ` `. `. /__, ,' // | MMMM/ MMMMMM( /MMMMP'__, \ | / `. `-,_\ / // | MM /MMM---' `--'_ \ |-' |/ `./ .\----.___ // | /MM' `--' __,- \"" |-' |_, `.__) . .F. )-. // | `--' \ \ |-' |_, _,-/ J . . . J-'-. `-., // | __ \`. | | | \ / _ |. . . . \ `-. F // | ___ / \ | `| ' __ \ | /-' F . . . . \ '` // | \ \ \ / | __ / \ | |,-' __,- J . . . . . \ // | | / |/ __,- \ ) \ / |_,- __,--' |. .__.----,' // | |/ ___ \ |'. |/ __,--' `.-;;;;;;;;;\ // | ___ \ \ | | ` __,--' /;;;;;;;;;;;;. // | \ \ |-'\ ' __,--' /;;;;;;;;;;;;;;\ // \ | | / | __,--' `--;;/ \;-'\ // \ | |/ __,--' / / \ \ // \ | __,--' / / \ \ // \|__,--' _,-;M-K, ,;-;\ // <;;;;;;;; '-;;;; // :D