Hull-Strategie für den gleitenden Durchschnitt und Trendfolge


Erstellungsdatum: 2023-11-02 14:57:37 zuletzt geändert: 2023-12-01 15:02:29
Kopie: 0 Klicks: 778
1
konzentrieren Sie sich auf
1617
Anhänger

Hull-Strategie für den gleitenden Durchschnitt und Trendfolge

Überblick

Diese Strategie basiert auf dem Hull Moving Average und ist eine typische Trend-Tracking-Strategie.

Strategieprinzip

Die Hull Moving Average wurde 2005 vom US-Händler Alan Hull entwickelt und basiert auf einer Verbesserung der Moving Average, die mit Hilfe der Quadratwurzel-Funktion die Rückständigkeit der Moving Average reduziert.

Konkret beinhaltet ein Hull-Moving-Average zwei Mittelwerte, ein Moving-Average MA (n) für Periode n und ein Moving-Average MA (n/2) für Periode n/2. Die Differenz zwischen den beiden Mittelwerten bildet die Hull-Differenz-Kurve, die dann mit der Hull-Differenz-Kurve berechnet wird, um ihre eigene Moving-Average zu erhalten.

Wenn die Hull-Kurve hoch ist, wird der langfristige Moving Average auf der kurzfristigen Moving Average getragen, um mehrere Signale auszulösen. Wenn die Hull-Kurve unter der kurzfristigen Moving Average liegt, wird der langfristige Moving Average unter der kurzfristigen Moving Average getragen, um einen leeren Signal auszulösen.

Diese Strategie setzt die Hull-Periode n auf 16, berechnet die n/2 = 8-Perioden-Moving Average, die n = 16-Perioden-Moving Average und berechnet die Hull-Kurve für die Differenz zwischen den beiden, und berechnet dann den n = 4-Perioden-Moving Average für die Hull-Kurve selbst (mit der Quadratwurzel n = 4).

Strategische Stärkenanalyse

Im Vergleich zum normalen Moving Average hat der Hull Moving Average folgende Vorteile:

  1. Verringerung der Lagerung. Durch die Verwendung der Quadratwurzel-Funktion ist die Hull-Kurve näher am Preis und kann die Preiswende schneller erfassen.

  2. Die traditionellen Moving Averages tendieren dazu, mehr False Crosses zu erzeugen, während die Hull-Kurve einige Geräusche filtert, um unnötige Transaktionen zu vermeiden.

  3. Weniger Parameter. Die Hull-Kurve benötigt nur einen Parameter (n) zur Optimierung, während ein Doppel-Einheits-System zwei Parameter benötigt.

  4. Anpassbar. Die n-Werte der Hull-Kurve können je nach Markt angepasst werden, und die Periode kann für verschiedene Sorten angepasst werden.

  5. Systematisch. Hull-Kurve ist systematisch, umgeht die manuelle Auswahl und folgt der Konsistenz des mechanischen Handelssystems.

Risikoanalyse

Obwohl die Hull-Systeme im Vergleich zu Moving Average-Systemen viele Vorteile haben, gibt es folgende Risiken:

  1. Die Grenzen der Trend-Tracking-Strategie selbst. Die Hull-Systeme als Trend-Tracking-Strategie sind anfällig für starke Trendwechsel.

  2. Hull-Kurven sind schnell reagierende Merkmale, die die Häufigkeit der Transaktionen erhöhen und leicht übertrieben werden können.

  3. parameters leicht überoptimierbar. Nur ein Parameter n kann leicht zu einer Überoptimierung führen, das Risiko von Curve Fitting.

  4. Die Wirkung variiert von Sorte zu Sorte. Die Hull-System funktioniert nicht gut für einige Sorten mit hoher Schwankungen und muss die Parameter für die Sorte anpassen.

Richtung der Strategieoptimierung

Aufgrund der Beschränkungen der oben beschriebenen Hull Moving Average Strategie können Optimierungen in folgenden Bereichen vorgenommen werden:

  1. In Kombination mit zusätzlichen Indikatoren filtern Sie die Handelssignale, um falsche Durchbrüche zu vermeiden. Sie können sich an Indikatoren wie MACD, KD und anderen Indikatoren beteiligen, um Trends zu beurteilen.

  2. Erhöhung der Stop-Loss-Strategie, um Einzelschaden zu kontrollieren.

  3. Die Optimierung von Optimierungsparametern n, um eine Überoptimierung zu vermeiden. Sie kann mit der Walk-Forward-Analyse-Methode zur Scroll-Optimierung verwendet werden.

  4. Dynamische Optimierungsparameter in Kombination mit maschinellen Lerntechniken. Optimale Werte für die Vorhersage von Parametern n mit Modellen wie RNN.

  5. Optimierung der Parameter unter den Sorten. Die Optimierung der Parameter unter den verschiedenen Sorten erfolgt durch die Verwendung von maschinellem Lernen.

  6. Optimierung der Positionsverwaltung und Verringerung der Handelsfrequenz.

Zusammenfassen

Die Hull Moving Average Strategie ist eine typische Trend-Tracking-Strategie. Die Hull Moving Average Strategie hat Vorteile gegenüber den Moving Averages, aber es gibt auch Probleme mit Überoptimierung und häufiger Handel. Wir können diese Strategie durch Parameteroptimierung, Stop-Loss-Strategie, Positionsmanagement usw. verbessern.

Strategiequellcode
/*backtest
start: 2023-10-25 00:00:00
end: 2023-11-01 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's HullMA Strategy", shorttitle = "HullMA str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
n = input(title = "HullMA period", defval=16)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//HullMA
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)
c=n1>n2?green:red
ma=plot(n1,color=c)
    
//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if n1 > n2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if n1 < n2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if true
    strategy.close_all()