Strategie zur Verfolgung der Trendentwicklung des kreuzenden gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2024-01-03 17:01:38
Tags:

img

Übersicht

Diese Strategie beurteilt den Kurstrend, indem sie das Kreuz von doppelten gleitenden Durchschnitten berechnet und Kauf- und Verkaufssignale mit bestimmten Parameterbeschränkungen ausgibt.

Strategieprinzip

Der Kern dieser Strategie liegt in der Berechnung von schnellen und langsamen gleitenden Durchschnitten. Der schnelle gleitende Durchschnitt hat eine Periode von der Hälfte der gesamten gleitenden Durchschnittsperiode, die empfindlicher auf Kursänderungen reagiert; der langsame gleitende Durchschnitt hat eine Periode der gesamten gleitenden Durchschnittsperiode, die die Preisänderungen reibungsloser widerspiegelt. Wenn der schnelle gleitende Durchschnitt über den langsamen geht, wird angenommen, dass der Preis steigt; wenn er darunter fällt, fällt er.

Darüber hinaus legt die Strategie bestimmte Parameter fest, um falsche Trades zu vermeiden. Zum Beispiel soll die Entscheidungsschwelle sicherstellen, dass Signale nur ausgegeben werden, wenn die Differenz zwischen den beiden gleitenden Durchschnitten ein bestimmtes Niveau überschreitet; der Vertrauensparameter wird verwendet, um kleine Kursschwankungen auszufiltern.

Schließlich werden Stop-Profit und Stop-Loss verwendet, um Risiken zu kontrollieren. Wenn Openprofit kleiner als Stop-Loss-Punkt oder größer als Stop-Profit-Punkt ist, werden Positionen geschlossen. Dies begrenzt effektiv den Verlust eines einzelnen Handels.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, das Urteil über Preistrends und Volatilitätsmerkmale durch gleitende Durchschnittsindikatoren zu kombinieren. Das Kreuzung von doppelten gleitenden Durchschnitten ist ein klassischer effektiver technischer Ansatz zur Bestimmung von Preistrends. Mit Parameteroptimierung kann es Trends genau erfassen. Der Vertrauensparameter kann störende Märkte effektiv filtern und häufige falsche Trades vermeiden.

Darüber hinaus können Parameter wie Entscheidungsschwelle, Stop-Profit und Stop-Loss auch die Handelsrisiken erheblich reduzieren, indem höchste und niedrigste Preise vermieden werden.

Risikoanalyse

Das Hauptrisiko dieser Strategie ist die Möglichkeit falscher Signale aus den doppelten gleitenden Durchschnitten. Sowohl schnelle als auch langsame MAs sind gewichtete gleitende Durchschnitte, die langsam auf plötzliche Ereignisse reagieren und somit kurzfristige Kursumkehrungen verpassen. Zu diesem Zeitpunkt kann der Vertrauensparameter eine doppelte Bestätigung liefern.

Darüber hinaus erhöhen auch unsachgemäße Einstellungen von Stop-Profit- und Stop-Loss-Punkten die Risiken. Zu hohes Gewinnziel und niedriger Stop-Loss-Punkt können zu Verlusten führen, die über die Erwartungen hinausgehen. Es müssen angemessene Parameter entsprechend den Eigenschaften der verschiedenen Handelsprodukte und der Volatilität festgelegt werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung der gleitenden Durchschnittsperioden, Anpassung an die Preisschwankungen verschiedener Zyklen;

  2. Einrichtung dynamischer Nachverfolgungsmechanismen für Stop-Profit und Stop-Loss, Berechnung der Volatilität in Echtzeit basierend auf den Marktbedingungen, so dass sich die Stopppunkte dynamisch ändern können;

  3. Maschinelle Lernmodelle verbessern, um die Kursentwicklung zu beurteilen, historische Daten nutzen, um aktuelle Kursbewegungen zu bestimmen und falsche Signale zu reduzieren.

Schlussfolgerung

Im Allgemeinen ist dies eine klassische einfache und effektive Trend-Handelsstrategie. Es verwendet ein doppeltes gleitendes Durchschnittskreuz, um Trends zu bestimmen, setzt Parameter zur Kontrolle von Risiken und hat eine hohe Konfigurationsfähigkeit für den Multi-Produkt-Handel. Wenn intelligentere Urteilsmittel wie maschinelles Lernen eingeführt werden können, könnte der Gesamteffekt für weitere Forschung noch besser sein.


/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend
strategy("Trade Signal", shorttitle="Trade Alert", overlay=true )
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold (0.001)", type=float, step=0.0001)
SL = input(defval=-10.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
confidence=(request.security(syminfo.tickerid, '5', close[1])-request.security(syminfo.tickerid, '60', close[1]))/request.security(syminfo.tickerid, '60', close[1])
conversionPeriods = input(9, minval=1, title="Conversion Line Periods")
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
LS=close, offset = -displacement
MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(26)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength)
aMACD = ema(MACD, MACD_Length)
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD
if (shortCondition)
    strategy.entry("Short",strategy.short)

//alerts
alertcondition(closelong, title='Close Buy Position', message='Close Buy Position')
alertcondition(closeshort, title='Close Short Position', message='Close Short Position')
alertcondition(longCondition, title='Buy Signal', message='Buy Signal Alert')
alertcondition(shortCondition, title='Sell Signal', message='Sell Signal Alert')

//a1=plot(n1,color=c)
//a2=plot(n2,color=c)plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
//plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")
p1=plot (leadLine1, offset = displacement, color=green,  title="Lead 1")
p2=plot (leadLine2, offset = displacement, color=red,  title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)
// remove the "//" from before the plot script if want to see the indicators on chart

Mehr