Die Kernidee dieser Strategie besteht darin, Markttrendrichtungen zu identifizieren, indem der Hull- gleitende Durchschnitt und der durchschnittliche wahre Bereich (ATR) kombiniert werden, und Positionen einzugeben, nachdem die Trendrichtung bestätigt wurde. Insbesondere berechnet sie den Unterschied zwischen den Hull-gleitenden Durchschnitten eines bestimmten Zeitraums und der vorherigen Periode. Wenn die Differenz steigt, zeigt sie einen bullischen Trend an; wenn die Differenz sinkt, zeigt sie einen bärischen Trend an. Gleichzeitig wird der ATR-Index verwendet, um die Richtung der Amplitude zu bestimmen.
Diese Strategie stützt sich hauptsächlich auf zwei Arten von Indikatoren: Hull Moving Average und ATR.
Der Hull Moving Average ist ein Trend-Folge-Indikator, der vom amerikanischen Futures-Trader Alan Hull entwickelt wurde. Ähnlich wie bei gleitenden Durchschnitten hat der Hull Moving Average eine höhere Empfindlichkeit und kann Preisänderungen und Trends schneller erfassen.
ATR steht für Average True Range. Es spiegelt die Amplitude der täglichen Kursschwankungen wider. Wenn die Volatilität steigt, steigt die ATR; wenn die Volatilität sinkt, fällt die ATR. Die Strategie setzt Parameter wie atrLength und atrSmoothing, um die ATR-Berechnung zu steuern.
Insbesondere ist die Strategielogik:
Die Vorteile dieser Strategie:
Einige Risiken dieser Strategie:
Lösungen:
Es gibt noch viel Optimierungsmöglichkeiten:
Diese Strategie integriert die Trend-Folge-Kapazität von Hull MA und die Hitze-Urteilsfähigkeit von ATR. Es tritt in Positionen ein, wenn der Trend bestätigt wird und die Volatilität steigt, um einige ungültige Signale auszufiltern. Eine weitere Verbesserung kann durch Parameteroptimierung und besseres Risikomanagement erreicht werden. Zusammenfassend lässt sich sagen, dass diese Strategie mehrere Faktoren der Trendverfolgung und des Hitzeurteils kombiniert. Wenn die Parameter fein abgestimmt sind, kann sie gute Ergebnisse liefern.
/*backtest start: 2024-01-07 00:00:00 end: 2024-01-14 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Hull cross and ATR strategy("Hull cross and ATR", shorttitle="H&ATR", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0) keh=input(title="Hull Length",defval=50) length = input(title="ATR Length", defval=50, minval=1) smoothing = input(title="ATR Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"]) p=input(ohlc4,title="Price data") n2ma=2*wma(p,round(keh/2)) nma=wma(p,keh) diff=n2ma-nma sqn=round(sqrt(keh)) n2ma1=2*wma(p[1],round(keh/2)) nma1=wma(p[1],keh) diff1=n2ma1-nma1 sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) ma_function(source, length) => if smoothing == "RMA" rma(p, length) else if smoothing == "SMA" sma(p, length) else if smoothing == "EMA" ema(p, length) else wma(p, length) plot(ma_function(tr(true), length), title = "ATR", color=black, transp=50) closelong = n1<n2 if (closelong) strategy.close("buy") closeshort = n1>n2 if (closeshort) strategy.close("sell") if (ma_function(tr(true), length)<p and p>p[length] and n1>n2) strategy.entry("buy", strategy.long, comment="BUY") if (ma_function(tr(true), length)>p and p<p[length] and n1<n2) strategy.entry("sell", strategy.short, comment="SELL")