Hull gleitender Durchschnittswert nach Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-19 16:40:00
Tags:

Übersicht

Diese Strategie basiert auf dem von Alan Hull erfundenen Hull Moving Average Indikator, der zu den Trendfolgende Strategien gehört.

Strategieprinzip

  1. Berechnen Sie kurzfristige und langfristige Hull-MAS.

  2. Wenn sich die kurzfristigen Hull-MAs kreuzen, wird die Trendumkehr bestimmt.

  3. Hinzufügen des Preisausbruchs durch Hull MA-Bedingung, um einen erfolgreichen Ausbruch zu gewährleisten.

  4. Hinzufügen eines Preisänderungsfilters, um unerwünschte Ausbrüche zu vermeiden.

  5. Setzen Sie Stop-Loss und nehmen Sie Gewinn, um das Risiko zu kontrollieren.

Analyse der Vorteile

Im Vergleich zu einfachen gleitenden Durchschnitten sind folgende Vorteile dieser Strategie:

  1. Hull MA reagiert schneller auf Preisänderungen und ist in der Lage, Trendwechsel rechtzeitig zu erfassen.

  2. Die doppelte Hull-MA-Struktur kann Trends sowohl für lange als auch für kurze Zeitrahmen bestimmen.

  3. Die Filter für Preis- und Wechselkursausbrüche helfen, falsche Ausbrüche zu vermeiden.

  4. Dynamische Stop-Loss- und Take-Profit-Verbindungen im Gewinn und kontrolliert das Risiko.

Risikoanalyse

Risiken dieser Strategie:

  1. Eine unsachgemäße Parameter-Einstellung kann eine Trendwende der Preise verpassen.

  2. Eine falsche allgemeine Trendbeurteilung kann zu Gegentrendgeschäften führen.

  3. Ein zu breit eingestellter Stop Loss kann zu großen Verlusten führen.

  4. Zu häufiger Handel erhöht die Transaktionskosten und das Risiko von Ausrutschen.

Optimierungsrichtlinien

Sie kann in folgenden Aspekten optimiert werden:

  1. Optimierung der Hull-MA-Perioden, um Empfindlichkeit und Glättlichkeit auszugleichen.

  2. Optimierung der Ein- und Ausstiegsparameter, um optimale Werte zu finden.

  3. Die Robustheit der Parameter an verschiedenen Instrumenten zu prüfen, um die Anpassungsfähigkeit zu verbessern.

  4. Um die Divergenzrisiken zu vermeiden, muss das Volumen berücksichtigt werden.

  5. Bedingungen hinzufügen, um die Stabilität zu verbessern.

Zusammenfassung

Insgesamt nutzt diese Strategie die Reaktionsfähigkeit von Hull MA, um den Trends rechtzeitig zu folgen, und hat eine starke Rentabilität unter Risikokontrolle.


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

//@version=2
//SeaSide420
strategy("SS420FX", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
q=input(title="HullMA Short",defval=14)
z=input(title="HullMA Long",defval=14)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100000.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(q/2))
nma=wma(close,q)
diff=n2ma-nma
sqn=round(sqrt(q))
n2ma1=2*wma(close[1],round(q/2))
nma1=wma(close[1], q)
diff1=n2ma1-nma1
sqn1=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
z2ma=2*wma(close[11],round(z/2))
zma=wma(close[11],z)
ziff=n2ma-nma
zqn=round(sqrt(z))
z2ma1=2*wma(close[12],round(z/2))
zma1=wma(close[12], z)
ziff1=n2ma1-nma1
zqn1=round(sqrt(z))
z1=wma(diff,sqn)
z2=wma(diff1,sqn)
z1e=z1>z2?green:black
z2e=z1>z2?black:red
z3e=z1>z2?green:red
n1e=plot(z1, title="HMA1", color=z1e, linewidth=2, offset=2)
n2e=plot(z2, title="HMA2", color=z2e, linewidth=2, offset=2)
fill(n1e, n2e, color=z3e, transp=80)
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and z1>z2 and strategy.opentrades<ot and confidence>dt and close>n1
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and z1<z2 and strategy.opentrades<ot and confidence<dt and close<n1 
if (shortCondition)
    strategy.entry("Short",strategy.short)

Mehr