Derivatenbasierte Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-12 11:06:28
Tags:

img

Übersicht

Diese Strategie investiert gleiche Anteile des Kapitals, basierend auf der Nutzung der 1., 2., 3. und 4. Zeitderivate des Hull Moving Average (HMA).

Strategie Logik

Die Strategie berechnet zunächst den HMA. Der Hull Moving Average ist ein gewichteter gleitender Durchschnitt, der mit der folgenden Formel berechnet wird:

hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm))) 

wobei src der Preis und sm ein Eingabeparameter ist, der die Länge des Durchschnitts bestimmt.

Die Strategie berechnet dann die Geschwindigkeit (erste Ableitung), die Beschleunigung (zweite Ableitung), den Ruck (dritte Ableitung) und den Schlag (vierte Ableitung). Diese werden berechnet, indem die Differenz zwischen der HMA und ihren Verzögerungswerten durch die Länge len dividiert wird.

speed = (hullma-hullma[len])/len

Die anderen Derivate werden ähnlich berechnet.

Die Strategie bestimmt Ein- und Ausgänge, indem sie die Anzeichen der Beschleunigung, des Schubs und des Schlages betrachtet. Wenn alle drei Indikatoren positiv sind, wird es lang gehen. Wenn alle drei negativ sind, wird es kurz gehen.

Darüber hinaus wird die Strategie auch Stopp-Verluste verfolgen, um Gewinne zu erzielen.

Analyse der Vorteile

Ein wesentlicher Vorteil dieser Strategie ist, dass sie mehrere Derivate als Ein- und Ausstiegssignale verwendet, die einige falsche Signale herausfiltern können.

Ein weiterer Vorteil ist, dass diese Strategie sehr flexibel ist. Sie hat mehrere anpassbare Parameter, einschließlich HMA-Länge, Längen der verschiedenen Derivate, Stop-Loss-Prozentsätze usw., die für verschiedene Märkte optimiert werden können.

Der Einsatz von verstellbaren Trailing Stops ist ebenfalls ein Vorteil, der der Strategie helfen kann, mehr Gewinne in Trendmärkten zu erzielen und gleichzeitig rechtzeitig in unruhigen Märkten auszusteigen und den maximalen Drawdown zu begrenzen.

Risikoanalyse

Das Hauptrisiko dieser Strategie ist eine verringerte Trefferrate aufgrund plötzlicher Ereignisse. Wenn keine relevanten Filter vorhanden sind, können große Nachrichtenereignisse dazu führen, dass mehrere Derivate gleichzeitig falsche Signale geben, was zu größeren Verlusten führt.

Ein weiteres Risiko besteht darin, dass die Parameter leicht übertragen werden können. Die HMA-Länge, die Derivatlängen usw. könnten sich alle auf die Ergebnisse auswirken. Dies erfordert eine strenge Rückprüfung, um die Robustheit dieser Parameter auf verschiedenen Märkten zu bewerten. Auch die Rückhaltverlustprozentsätze sollten nicht zu groß sein, sonst könnten Verluste Schneeball werden.

Optimierungsrichtlinien

Diese Strategie könnte auf verschiedene Weise optimiert werden:

  1. Fügen Sie Filter hinzu, die auf Burst-Ereignissen basieren, um den Handel nach wichtigen Nachrichtenereignissen für eine gewisse Zeit zu unterbrechen, um fehlende Einstiegspunkte zu vermeiden, die zu großen Verlusten führen

  2. Durchführen von Robustheitstests von Parametern auf verschiedenen Märkten.

  3. Versuchen, die Logik der Eingabe zu verbessern; Einführung von Modellen des maschinellen Lernens zur Identifizierung von Trends anstelle einfacher positiver/negativer Urteile

  4. Verbessern Sie die Stop-Loss-Methodik. Verwenden Sie statt einfacher Prozentsatz-Trailing-Stops Volatilitäts- oder maschinelles Lernen-Stops

  5. Die derzeitige Logik beruht hauptsächlich auf Stops, könnte zusätzliche Aufwärtsverfolgung oder Zielgewinn-Ausgänge hinzufügen

Schlussfolgerung

Dies ist ein Multi-Zeitrahmen-Trend nach Strategie, die mehrere Derivate des Hull Moving Average als Einstiegs- und Ausstiegssignale mit Trailing-Stops verwendet, um Gewinne zu erzielen. Zu den wichtigsten Vorteilen gehört die Filterung falscher Signale mithilfe mehrerer Derivate, flexibler einstellbarer Parameter usw. Zu den zu berücksichtigenden Risiken gehören Auswirkungen von Burst-Ereignissen und potenzieller Parameterüberanpassung. Die Strategie könnte durch Hinzufügen von Filtern, Verbesserung der Parameterrobustheit, Verbesserung der Einstiegs- / Ausstiegslogik usw. optimiert werden, um es zu einem zuverlässigeren automatisierten Handelssystem zu machen.


/*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)


Mehr