Hull MA Oszillator-Strategie basierend auf Kanälen und linearer Regression


Erstellungsdatum: 2023-12-01 16:47:01 zuletzt geändert: 2023-12-01 16:47:01
Kopie: 0 Klicks: 731
1
konzentrieren Sie sich auf
1619
Anhänger

Hull MA Oszillator-Strategie basierend auf Kanälen und linearer Regression

Überblick

Diese Strategie ist eine Schwankungs-Trading-Strategie, die Hull MA, Preiskanal, EMA-Signal und lineare Regression kombiniert. Die Strategie nutzt die Hull MA, um die Richtung der Markttrend zu bestimmen, Preiskanal und lineare Regression, um die Bottom-Region zu bestimmen, und EMA-Signal, um die Markteintrittszeit zu bestimmen, um die mittleren Kurzlinien zu erfassen.

Strategieprinzip

Die Strategie umfasst folgende Komponenten:

  1. Hull MA
    • Hull MA ist 337 in der Periode und stellt die Richtung der mittleren Langlinie dar.
    • Wenn das 2-fache 18-Zyklus-WMA höher als das 337-Zyklus-WMA ist, ist es ein Mehrkopfmarkt, umgekehrt ein Leerkopfmarkt
  2. Preiskanal
    • Der Preiskanal besteht aus hohen und niedrigen EMAs, die Bereiche darstellen, in denen sich Unterstützung und Widerstand leicht bilden können
  3. EMA-Signal
    • Die EMA-Signalperiode ist in der Regel 89-Zyklen lang und repräsentiert die Kurzlinien-Trend- und Markteintrittssignale.
  4. Lineare Regression
    • Kurzlinie 6 - Bottom und Breakout
    • Langleiter 89-Periode, um die Richtung der mittleren und langen Linie zu bestimmen

Eingangslogik:

Mehrere Eintritte: Hull MA nach oben und höher als auf der Strecke, lineare Rückkehr nach oben über die kurzfristige EMA Hull-Eintritt: Hull MA nach unten und unterhalb der Unterbahn, lineare Rückkehr nach unten durch die kurzfristige EMA

Die Ausgangslogik:

Mehrköpfige Abfahrt: Preise unterhalb der Unterbahn und über eine lineare Rückkehr nach unten Leerfahrt: Preise über der Oberbahn und über eine lineare Rückkehr nach oben

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Mehrindikator-Kombinationen, um genau zu beurteilen
    • Hull MA entscheidet über den Hauptrend, Kanal entscheidet über den Unterdruck, EMA entscheidet über den Einstieg
  2. Der Trend wird von den meisten Händlern in den USA verfolgt.
    • Die Strategie ist eine umgekehrte, vorwiegend schwankende Handelsstrategie, die Trends in jedem kurzfristigen Zyklus erfasst.
  3. Risiken sind kontrollierbar, Rücktritte gering
    • Strategie: Signale nur in hochwahrscheinlichen Zonen senden, um nicht nach Höhen und Tiefen zu jagen

Risikoanalyse

Die Strategie birgt auch Risiken:

  1. Es gibt nur einen begrenzten Platz für Parameteroptimierungen.
    • Hauptparameter wie EMA-Perioden sind relativ fest, Optimierungsraum ist klein
  2. Verluste durch die Erschütterung
    • Der Stop-Loss kann ausgelöst werden, wenn der Preis horizontal schwankt.
  3. Eine gewisse Basis für technische Analysen
    • Strategische Ideen erfordern ein gewisses Wissen über Preisverhalten und Kennzahlen und sind nicht für alle geeignet

Die Optimierung kann aus folgenden Gründen erfolgen:

  1. Anpassung der Schadensbegrenzungsstrategie, wie zum Beispiel der Erschütterung nach dem Erdbeben
  2. Optimierung der Ein- und Ausgangslogik
  3. Hinzufügen von Filtern für andere Indikatoren, z. B. MACD

Zusammenfassen

Die Strategie verwendet mehrere Indikatoren wie den Hull MA, den Preiskanal, die EMA und die lineare Regression, um eine vollständige mittlere, kurze und schwankende Handelsstrategie zu bilden. Im Vergleich zu einem einzigen Indikator kann die Strategie die Richtigkeit der Beurteilung erheblich verbessern und Gewinne bei Trends und Umkehrungen erfassen. Es besteht jedoch ein gewisses Risiko, das eine Grundlage für technische Analyse erfordert.

Strategiequellcode
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Swing Hull/SonicR/EMA/Linear Regression Strategy", overlay=true)
//Hull MA
n=input(title="HullMA Period",defval=377)
//
n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))
//
n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))
//
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
condDown = n2 >= n1
condUp = condDown != true
col =condUp ? lime : condDown ? red : yellow
plot(n1,title="Hull MA", color=col,linewidth=3)
// SonicR + Line reg
EMA = input(defval=89, title="EMA Signal")
HiLoLen     = input(34, minval=2,title="High Low channel Length")
lr     = input(89, minval=2,title="Linear Regression Length")
pacC        = ema(close,HiLoLen)
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
DODGERBLUE = #1E90FFFF
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90)
H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90)
C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80)
//Moving Average//
signalMA =ema(close,EMA)
plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line)
linereg = linreg(close, lr, 0)
lineregf = linreg(close, HiLoLen, 0)
cline=linereg>linereg[1]?green:red
cline2= lineregf>lineregf[1]?green:red
plot(linereg, color = cline, title = "Linear Regression Curve Slow", style = line, linewidth = 1)
//plot(lineregf, color = cline2, title = "Linear Regression Curve Fast", style = line, linewidth = 1)
longCondition = n1>n2
shortCondition = longCondition != true
closeLong =  lineregf-pacH>(pacH-pacL)*2 and close<lineregf and linereg>signalMA
closeShort = pacL-lineregf>(pacH-pacL)*2 and close>lineregf and linereg<signalMA
if shortCondition    
    if (close[0] < signalMA[0] and close[1] > pacL[1] and linereg>pacL and close<n1 and pacL<n1) //cross entry
        strategy.entry("SHORT", strategy.short, comment="Short")
strategy.close("SHORT", when=closeShort) //output logic
if longCondition // swing condition          
    if (close[0] > signalMA[0] and close[1] < pacH[1] and linereg<pacH and close>n1 and pacH>n1) //cross entry
        strategy.entry("LONG", strategy.long, comment="Long")
strategy.close("LONG", when=closeLong) //output logic