Strategie für die Verlagerung des gleitenden Durchschnitts des Rumpfes

Schriftsteller:ChaoZhang, Datum: 2024-03-22 14:57:10
Tags:

img

Übersicht

Der Hull Moving Average (HMA) ist ein technischer Indikator, der von Alan Hull entwickelt wurde, um die Verzögerung traditioneller gleitender Durchschnitte zu reduzieren. Die Strategie verwendet zwei HMA mit unterschiedlichen Perioden. Ein Kaufsignal wird erzeugt, wenn der kürzere Zeitraum HMA über den längeren Zeitraum HMA kreuzt, und ein Verkaufssignal wird erzeugt, wenn das Gegenteil geschieht.

Grundsätze

  1. Berechnung des gleitenden Durchschnitts des Rumpfes (HMA)

Die HMA wird wie folgt berechnet:

  • Berechnen Sie zunächst den gewichteten gleitenden Durchschnitt (WMA) des Preises mit einer Periode von der Hälfte des Eingabeparameters length
  • Berechnen Sie dann die WMA der vorherigen WMA mit einer Periode von länge
  • Verwenden Sie die Formel: HMA = 2 * WMA (Länge/2) - WMA (Länge)
  • Berechnen Sie die WMA des obigen Ergebnisses erneut mit einer Periode der Quadratwurzel von length, um die endgültige HMA zu erhalten
  1. Erzeugung von Handelssignalen
  • Wenn der Schlusskurs über die HMA geht, wird ein Kaufsignal generiert.
  • Wenn der Schlusskurs unter die HMA fällt, wird ein Verkaufssignal generiert
  1. Ausführung von auf Signalen basierenden Geschäften
  • Kaufsignal: Öffnen einer Longposition
  • Verkaufssignal: Eröffnen einer Shortposition

Vorteile

  1. Im Vergleich zum einfachen gleitenden Durchschnitt und dem gewichteten gleitenden Durchschnitt hat der Hull-gleitende Durchschnitt eine geringere Verzögerung, so dass er schneller auf Kursänderungen reagieren kann und die Reaktionsfähigkeit der Strategie verbessert.

  2. Durch die Verwendung des Crossovers von zwei HMAs mit unterschiedlichen Perioden zur Erzeugung von Signalen können viele Geräusche und falsche Signale effektiv ausfiltert werden, wodurch die Zuverlässigkeit der Signale erhöht wird.

  3. Durch die Anpassung der Zeitrahmenparameter der HMAs kann die Strategie an verschiedene Märkte und Handelsinstrumente angepasst werden.

Risiken

  1. Der Hull Moving Average ist ein Rückstandsindikator, der in den frühen Phasen einer Trendumkehr falsche Signale erzeugen kann.

  2. Eine unangemessene Parameterwahl kann zu einer schlechten Strategieleistung führen, wenn der Zeitraum zu lang ist, wird die Strategie nur langsam reagieren, wenn der Zeitraum zu kurz ist, kann dies zu übermäßigen falschen Signalen führen.

  3. Wie alle Strategien, die auf einem einzigen Indikator basieren, kann diese Strategie in seitlichen Märkten möglicherweise nicht gut abschneiden und mehr falsche Signale generieren und Trades verlieren.

Optimierungsrichtlinien

  1. Es sollte in Erwägung gezogen werden, andere technische Indikatoren oder grundlegende Faktoren als Filter einzuführen, z. B. Handelsvolumen, Trendindikatoren usw., um die Gültigkeit der HMA-Crossover-Signale weiter zu bestätigen.

  2. Für die Parameteroptimierung können Methoden wie genetische Algorithmen und Rastersuche verwendet werden, um die optimale Parameterkombination auf historischen Daten zu finden, die am besten für den aktuellen Markt geeignet ist.

  3. Einbeziehung von Stop-Loss- und Take-Profit-Mechanismen in die Strategie zur Kontrolle von Risiko und Rendite jedes Handels.

  4. Wenn man Indikatoren einführt, um Markttrends zu beurteilen, kann man in Trendmärkten handeln und seitliche Märkte vermeiden.

Zusammenfassung

Die Hull Moving Average Crossover-Strategie ist eine einfache und einfach zu bedienende Handelsstrategie. Mit der schnellen Reaktionscharakteristik von HMA kann sie Preisänderungen rechtzeitig erfassen. Wie alle Strategien hat sie jedoch auch ihre Grenzen und ihre Leistung wird durch Markttypen und Parameterwahl beeinflusst. In der Praxis kann sie mit anderen Analysemethoden kombiniert werden, um die Signale weiter zu bestätigen. Gleichzeitig sind angemessene Risikokontrollmaßnahmen wie Stop-Loss und Take-Profit, Positionsmanagement usw. auch unverzichtbare Teile für den stabilen Betrieb der Strategie.


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Basic Hull Ma Pack tinkered by InSilico 
strategy("RKTD BETA - Hull Suite by InSilico", overlay=true)

//INPUT
src = input(close, title="Source")
modeSwitch = input("Ehma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(200, title="Length(180-200 for floating S/R , 55 for swing entry)")
lengthMult = input(1.0, title="Length multiplier (Used to view higher timeframes with straight band)")

useHtf = input(false, title="Show Hull MA from X timeframe? (good for scalping)")
htf = input("240", title="Higher timeframe", type=input.resolution)

switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch  = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)

// Alert Messages
longAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "long", "orderType": "market", "close":true}'
shortAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "short", "orderType": "market", "close":true}'

//FUNCTIONS
//HMA
HMA(_src, _length) =>  wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>  ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA    
THMA(_src, _length) =>  wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
    
//SWITCH
Mode(modeSwitch, src, len) =>
      modeSwitch == "Hma"  ? HMA(src, len) :
      modeSwitch == "Ehma" ? EHMA(src, len) : 
      modeSwitch == "Thma" ? THMA(src, len/2) : na

//OUT
_hull = Mode(modeSwitch, src, int(length * lengthMult))
HULL = useHtf ? security(syminfo.ticker, htf, _hull) : _hull
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
alertcondition(crossover(MHULL, SHULL), title="Hull trending up.", message="Hull trending up.")
alertcondition(crossover(SHULL, MHULL), title="Hull trending down.", message="Hull trending down.")
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)

// Define Buy and Sell Conditions based on crossovers
buyCondition = crossover(MHULL, SHULL)
sellCondition = crossunder(MHULL, SHULL)

// Plotting the Hull Moving Average (HMA)
plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch)
plot(SHULL, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=transpSwitch)
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)

// Execute Strategy based on Buy and Sell Conditions
strategy.entry("Buy", strategy.long, when=buyCondition, alert_message=longAlertMessage)
strategy.entry("Sell", strategy.short, when=sellCondition, alert_message=shortAlertMessage)

// Additional elements like bar coloring remain unchanged
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)


Mehr