
Die Strategie basiert auf Investitionen mit den Zeitderivaten der Phasen 1, 2, 3 und 4 des Hull Moving Averages (HMA). Es wird ein gewisses Maß an Geld investiert. Der Einstiegspunkt wird durch die Trends der Phasen 2, 3 und 4 identifiziert, während der Ausstiegspunkt durch einen neuen Einstiegspunkt oder eine verfolgte Stop-Loss-Prozentzahl erstellt wird.
Die Strategie berechnet zunächst den HMA. Der Hull Moving Average ist ein gewichteter Moving Average, der mit der folgenden Formel berechnet wird:
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
src ist der Preis und sm ist ein Eingabeparameter, der die Länge des Durchschnitts bestimmt.
Anschließend berechnet die Strategie die Geschwindigkeit (Derivate 1), die Beschleunigung (Derivate 2), die Erschütterung (Derivate 3) und die Schwingung (Derivate 4). Diese werden berechnet, indem die Differenz zwischen dem HMA und seinem Verzögerungswert berechnet und dann durch die Länge len dividiert wird. Die Formel zur Berechnung der Geschwindigkeit lautet zum Beispiel:
speed = (hullma-hullma[len])/len
Die übrigen Variablen werden ähnlich berechnet:
Die Strategie entscheidet über Ein- und Ausstieg durch die Betrachtung der Positiv-Negativ-Werte von Beschleunigung, Erschütterung und Erschütterung. Wenn alle drei Werte positiv sind, eröffnet sie eine Pluskarte.
Die Strategie beinhaltet außerdem einen Trailing Stop Loss, um Gewinne zu sichern. Eine Mehrkopf-Position basiert auf einem veränderbaren Inputprozentsatz, der einem Stop-Loss entspricht.
Ein Hauptvorteil dieser Strategie ist, dass sie mehrere Faktoren als Ein- und Ausgangssignal verwendet, was einige falsche Signale filtern kann. Die Einführung wird oft nur aufgrund der Geschwindigkeit (einfache Faktoren) entschieden, die oft zu schwach sind, aber in Kombination mit Faktoren 2, 3 und 4 kann ein relativ starkes System aufgebaut werden.
Ein weiterer Vorteil ist, dass die Strategie sehr flexibel ist. Es gibt mehrere anpassbare Parameter, einschließlich der HMA-Länge, der Länge der verschiedenen Derivate, des Stop-Loss-Prozentsatzes usw., die für verschiedene Märkte optimiert werden können.
Der Einsatz von einstellbaren Tracking-Stopps ist ebenfalls ein Vorteil. Dies hilft der Strategie, mehr Gewinne in Trend-Situationen zu erzielen, während der zeitnahe Ausstieg in Schock-Situationen den maximalen Rückzug einschränkt.
Das Hauptrisiko dieser Strategie besteht in der Verringerung der Trefferquote durch Überraschungen. Ohne entsprechende Filterregeln können nach einem wichtigen Nachrichtenereignis mehrere Leiter gleichzeitig falsche Signale erzeugen, was zu einem größeren Verlust führt. Einige Nachrichtenfilter können eingerichtet werden oder die Strategie nach einem Überraschungsereignis für eine gewisse Zeit ausgesetzt werden, um dieses Risiko zu verringern.
Ein weiteres Risiko besteht darin, dass die Parameter leicht überpassen. Parameter wie die HMA-Länge und die Länge der einzelnen Derivate können die Ergebnisse beeinflussen. Dies erfordert eine strenge Rückmessmethode, um die Stabilität dieser Parameter in verschiedenen Märkten zu bewerten.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Erhöhung der Filtermechanismen auf Basis von Ereignissen, Aussetzung des Handels für eine gewisse Zeit nach einem wichtigen Ereignis, um zu verhindern, dass ein fehlender Einstiegspunkt zu große Verluste verursacht.
Die Stabilität der Parameter wird durch mehrere Markttests sichergestellt. Daten aus verschiedenen Sorten und Zeitabschnitten können überprüft werden, um die Stabilität der Parameter-Einstellungen zu beurteilen.
Versuchen Sie, die Logik des Einstiegs zu verändern. Es kann ein Maschinelles Lernen eingeführt werden, das Trends automatisch erkennt, anstatt nur positive oder negative Entscheidungen zu treffen.
Verbesserte Stop-Methoden: Die Verwendung von Volatilitätsstop oder Machine-Learning-Stop-Methoden kann anstelle von einfachen Prozentsatz-Stop-Tracking verwendet werden
Erhöhung der Stop-Exit. Die bestehende Logik basiert hauptsächlich auf Stop-Loss, die zusätzlich erweitert werden kann, um die Stop-Exit- oder die Ziel-Profit-Exit-Strecke nach oben zu verfolgen.
Die Strategie ist eine mehrere Zeit-Skala-Trend-Tracking-Strategie. Es verwendet die Hull Moving Average mehrere Derivate als Positions-und Positions-Signal, mit der Verfolgung von Stop-Losses, um die Gewinne zu sperren. Die Hauptvorteile sind die Verwendung von mehreren Derivaten Filter falsche Signale, Strategie-Parameter-Flexibilität, etc. zu filtern.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000)
len = input(1, minval=1, title="Derivatives Length")
sm = input(4, minval=1, title="HMA Length")
longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01
shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01
longStopPrice=0.0
shortStopPrice=0.0
src = input(ohlc4, title="Source")
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
speed = (hullma-hullma[len])/len
accel = (speed-speed[len])/len
jerk = (accel-accel[len])/len
jounce = (jerk-jerk[len])/len
plot(speed, color=green)
plot(accel, color=purple)
plot(jerk, color=red)
plot(jounce, color=blue)
// hline(0, linestyle=solid, color=black)
if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0
strategy.entry("openlong", strategy.long)
if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0
strategy.entry("openshort",strategy.short)
speed_profit = (strategy.openprofit-strategy.openprofit[1])/len
accel_profit = (speed_profit-speed_profit[1])/len
jerk_profit = (accel_profit-accel_profit[1])/len
longStopPrice:=if(strategy.position_size>0)
stopValue=ohlc4*(1-longTrailPerc)
max(stopValue,longStopPrice[1])
else
0
shortStopPrice:=if(strategy.position_size<0)
stopValue=ohlc4*(1+shortTrailPerc)
min(stopValue,shortStopPrice[1])
else
999999
if(strategy.position_size>0)
strategy.exit(id="closelong",stop=longStopPrice)
if(strategy.position_size<0)
strategy.exit(id="closeshort",stop=shortStopPrice)