Diese Strategie ist eine Trendfolgestrategie, die den Preisdynamikindikator verwendet. Sie beurteilt den Markttrend, indem sie die Schlusskursänderung über einen bestimmten Zeitraum berechnet und entsprechende Long- oder Short-Einträge macht, wenn ein anhaltender Auf- oder Abwärtstrend besteht.
Der Kernindikator dieser Strategie ist die Preisdynamik, die wie folgt berechnet wird:
momentum = close - close[n]
wenn n die Länge der Momentumperiode darstellt. Wenn Momentum > 0, bedeutet dies, dass der Preis während des laufenden Zeitraums gestiegen ist. Wenn Momentum < 0, bedeutet dies, dass der Preis im laufenden Zeitraum gefallen ist.
Die Strategie setzt zunächst einen confirmBars-Parameter, der die Anzahl der Kerzen darstellt, die für das Trendbeurteilungsverfahren vor der Ausführung von Trades benötigt werden.
Der Schlüssel zum Trendbeurteil der Strategie besteht darin, die Anzahl der aufeinanderfolgenden Kerzen zu zählen, bei denen die Dynamik größer oder kleiner als 0 ist, was durch die Variablen bcount und discount erreicht wird. Sie werden um 1 erhöht, wenn die entsprechende Bedingung erfüllt ist, und auf 0 zurückgesetzt, wenn die Bedingung nicht erfüllt ist. Wenn die Zählung confirmBars erreicht, wird der entsprechende Long- oder Short-Handel ausgeführt.
Dies ist ein relativ einfacher Trend nach einer Strategie mit folgenden Vorteilen:
Die Strategie birgt auch einige Risiken:
Die Strategie kann in mehreren Aspekten optimiert werden:
Zusammenfassend ist diese Momentum-Breakout-Strategie eine einfache und praktische Trendfolgestrategie, die als einführende Quant-Trading-Strategie geeignet ist. Bei der Anwendung ist darauf zu achten, die Handelsfrequenz zu kontrollieren und Überhandel zu verhindern. In der Zwischenzeit müssen Parameter und Filter basierend auf tatsächlichen Produkten und Marktumgebungen angepasst und optimiert werden, damit die Strategie maximale Leistung erzielt.
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Momentum Strategy [TS Trader]", overlay=true) confirmBars = input(1) momentumLength = input(14, title="Momentum Length") price = close momentum = close - close[momentumLength] // === INPUT BACKTEST RANGE === fromYear = input.int(2019, title="Backtest Start Year") fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12) fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31) toYear = input.int(2023, title="Backtest End Year") toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12) toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31) startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00) endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59) inBacktestRange = true // === STRATEGY LOGIC === bcond = momentum > 0 bcount = 0 bcount := bcond ? nz(bcount[1]) + 1 : 0 if (bcount == confirmBars and inBacktestRange) strategy.entry("Buy", strategy.long, comment="Long") scond = momentum < 0 scount = 0 scount := scond ? nz(scount[1]) + 1 : 0 if (scount == confirmBars and inBacktestRange) strategy.entry("Sell", strategy.short, comment="Short") // Plotting Momentum plot(momentum, title="Momentum", color=color.purple)