Handelsstrategie mit doppelten gleitenden Durchschnittswerten

Schriftsteller:ChaoZhang, Datum: 23.10.2023
Tags:

img

Übersicht

Diese Strategie kombiniert die Vorteile des Hull-Beweglichen Durchschnitts und des T3-Beweglichen Durchschnitts, um eine marktübergreifende Handelsstrategie zu entwerfen. Sie kann sowohl für den kurzfristigen Handel als auch für die langfristige Trendverfolgung verwendet werden.

Strategie Logik

Die Strategie beruht hauptsächlich auf der Berechnung des gleitenden Durchschnitts von Hull und des gleitenden Durchschnitts von T3.

Der Hull Moving Average (HMA) verwendet eine gewichtete gleitende durchschnittliche iterative Berechnungsmethode, um Marktlärm effektiv auszufiltern und eine glatte Kurstrendkurve anzuzeigen.

Der gleitende Durchschnitt T3 reagiert schneller auf Preisänderungen und reduziert gleichzeitig die Verzögerung durch Anpassung von Parametern.

Diese Strategie verwendet den Durchschnitt der beiden als Haupthandelsindikator und beurteilt den Eintrittszeitpunkt nach der Richtung dieser Durchschnittslinie: Wenn der Durchschnitt der laufenden Periode höher ist als der vorhergehende Zeitraum, ist dies ein langes Eintrittssignal; wenn er niedriger ist, ist dies ein kurzes Eintrittssignal.

Für die Ausstiegsregeln, wenn der Preis den Stop-Loss- oder Take-Profit-Punkt durchbricht, Ausstieg; auch Ausstieg, wenn sich die gleitende Durchschnittsrichtung ändert.

Analyse der Vorteile

Diese Strategie kombiniert die Vorteile des Hull-Beweglichen Durchschnitts und des T3-Beweglichen Durchschnitts, um einen umfassenden Indikator zu generieren. Als nächstes eignet sich diese Strategie sowohl für den kurzfristigen als auch für den langfristigen Handel, indem sie den Zyklusparameter anpasst. Außerdem verwendet sie einen dynamischen Stop-Loss und Take-Profit, um Gewinne zu erzielen und Risiken zu kontrollieren.

Risikoanalyse

Die Strategie beruht hauptsächlich auf dem gleitenden Durchschnittsindikator, der mehrere falsche Signale in schwankenden Trends erzeugen kann. Darüber hinaus kann die Verzögerung der gleitenden Durchschnitte den besten Einstiegszeitpunkt verpassen. Die Stop-Loss- und Take-Profit-Punkte müssen sorgfältig eingestellt werden, um zu locker oder zu eng zu vermeiden. Schließlich müssen die Parameter für verschiedene Währungen und Zeitrahmen optimiert werden.

Optimierung

Überlegen Sie, andere Indikatoren hinzuzufügen, um das MA-Signal zu überprüfen und falsche Signale auszufiltern. Testen Sie verschiedene MA-Kombinationen und Gewichtungsalgorithmen, um das MA-Signal zu optimieren. Fügen Sie adaptive Stop Loss und Trailing Take Profit hinzu, um Risiken dynamisch zu verwalten. Führen Sie eine Backtesting-Optimierung auf verschiedenen Währungen und Zeitrahmen durch, um die optimalen Parameter zu finden.

Zusammenfassung

Diese Strategie integriert die Stärken des Hull-Beweglichen Durchschnitts und des T3-Beweglichen Durchschnitts, um einen umfassenden Indikator zur Beurteilung der Trendrichtung zu bilden. Durch Parameteroptimierung kann die Strategie flexibel auf verschiedene Handelszyklen angewendet werden. Die Strategie hat bestimmte Vorteile, aber auch Probleme wie Verzögerungen und falsche Signale. Durch Hinzufügen anderer Indikatoren, Optimierung von Parametern und dynamischen Stops kann sie kontinuierlich für bessere Ergebnisse verbessert werden.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4


strategy(title="Swing HULL + T3 avg", shorttitle="Swing HULL T3 AVG", overlay=true)

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



////////////////////////////GENERAL INPUTS//////////////////////////////////////

length_Ma= input(defval=50, title="Length MAs", minval=1)

//==========HMA
getHULLMA(src, len) =>
    hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
    hullma

//==========T3
getT3(src, len, vFactor) =>
    ema1 = ema(src, len)
    ema2 = ema(ema1,len)
    ema3 = ema(ema2,len)
    ema4 = ema(ema3,len)
    ema5 = ema(ema4,len)
    ema6 = ema(ema5,len)
    c1 = -1 * pow(vFactor,3)
    c2 = 3*pow(vFactor,2) + 3*pow(vFactor,3)
    c3 = -6*pow(vFactor,2) - 3*vFactor - 3*pow(vFactor,3)
    c4 = 1 + 3*vFactor + pow(vFactor,3) + 3*pow(vFactor,2)
    T3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3
    T3





hullma = getHULLMA(close,length_Ma)

t3 = getT3(close,length_Ma,0.7)


avg = (hullma+t3) /2


////////////////////////////PLOTTING////////////////////////////////////////////


colorado = avg > avg[1]? color.green : color.red

plot(avg , title="avg", color=colorado, linewidth = 4)

long=avg>avg[1]
short=avg<avg[1]

tplong=input(0.08, title="TP Long", step=0.01)
sllong=input(1.0, title="SL Long", step=0.01)

tpshort=input(0.03, title="TP Short", step=0.01)
slshort=input(0.06, title="SL Short", step=0.01)


if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")


Mehr