
Die Strategie ermöglicht die Verfolgung der Kryptowährungspreistrends durch die Festlegung von Höhen und Tiefen, an denen die Preise durchbrechen. Wenn der Preis die Höchststände überschreitet, wird ein Plus getätigt, und wenn der Preis die Tiefststände überschreitet, wird ein Minus getätigt, um den Trend zu erfassen.
Die Strategie entscheidet überwiegend über eine deutliche Aufwärts- oder Abwärtsentwicklung der Preise mittels einer schlanken, gewichteten Moving Average. Konkret wird der Höchst- und Tiefstpreis innerhalb eines bestimmten Zeitraums berechnet. Wenn der tatsächliche Handelspreis den statistischen Höchstpreis übersteigt, wird ein Aufwärtstrend ermittelt, und wenn der tatsächliche Handelspreis unter dem statistischen Tiefstpreis liegt, wird ein Abwärtstrend ermittelt.
Der Aufnahmepreis für die Übernahme wird durch die Eingabe des Parameterfelds ENTRY eingestellt, der Ausgabepreis durch den Parameterfeld EXIT eingestellt. Die Rückmesszeit kann auch durch die Parameter eingestellt werden. So kann die optimale Kombination der Kombos durch Anpassung der Parameter gefunden werden.
Die wichtigste Logik der Strategie lautet:
Durch diese logische Kreislauf kann die Auf- und Abwärtstrend der Preise erfasst werden, um Trend-Tracking zu ermöglichen.
Der größte Vorteil dieser Strategie besteht darin, dass die Preisentwicklung automatisch über die Parameter-Anpassung erfasst werden kann, ohne die Richtung der Tendenz manuell zu beurteilen. Wenn die Parameter richtig eingestellt sind, kann die Preisbewegung der Kryptowährung automatisch verfolgt werden.
Die Strategie eignet sich außerdem hervorragend für quantitative Transaktionen und ermöglicht die einfache Automatisierung von Bestellungen. Sie erfordert keine manuelle Handhabung, verringert das Risiko von emotionalen Transaktionen und kann die Effizienz erheblich steigern.
Schließlich kann die Strategie auch durch Parameter-Anpassungen den Gewinn maximieren. Durch das Testen verschiedener ENTRY- und EXIT-Parameter kann die optimale Parameter gefunden werden, um den Gewinn zu maximieren.
Die größte Gefahr dieser Strategie besteht darin, dass die falsche Einstellung der Parameter zu häufigen Transaktionen führen kann, was zu erhöhten Transaktionsgebühren und Verlusten an Slip-Points führt. Wenn die ENTRY-Einstellung zu niedrig und die EXIT-Einstellung zu hoch ist, kann leicht ein falsches Handelssignal erzeugt werden.
Wenn die Parameter nicht richtig angepasst werden, kann es auch dazu führen, dass die Preisentwicklung nicht rechtzeitig erfasst wird und die Handelschancen verpasst werden. Dies erfordert eine große Anzahl von Rückprüfungen, um die optimalen Parameter zu finden.
Schließlich ist die Strategie zu empfindlich für kurzfristigen Marktlärm und kann falsche Handelssignale erzeugen. Dies muss durch die richtige Einstellung der Handelszeitzyklusparameter vermieden werden.
Die Strategie kann weiter optimiert werden in folgenden Richtungen:
Erhöhen Sie die Stop-Loss-Logik. So können Sie den Ausfall stoppen, wenn der Verlust sich um einen bestimmten Prozentsatz erweitert, um größere Verluste zu vermeiden.
Technische Indikatoren wie beispielsweise die Moving Averages werden gefiltert. Indikatoren wie MA, KDJ und andere werden verwendet, um große Trends zu erkennen und zu vermeiden, dass kurzfristige Geräusche zu viele Geschäfte verursachen.
Optimierte Parameter-Setting-Logik. Es kann ein Anpassungsmechanismus für die ENTRY- und EXIT-Parameter eingestellt werden, anstatt eine statische Einstellung, die die Parameter an die Marktumgebung anpasst.
Nutzung der optimalen Parameter für das Maschinelle Lernen. Durch Training mit einer großen Menge an historischen Daten erhalten Sie die optimalen ENTRY- und EXIT-Einstellungen für die aktuelle Marktumgebung.
Die Strategie ermöglicht die Automatisierung des Handels durch die Erfassung von Preistrends. Der größte Vorteil besteht darin, die Auswirkungen menschlicher Emotionen auf den Handel zu reduzieren, Risiken zu verringern und die Effizienz zu verbessern. Gleichzeitig kann durch Parameteranpassung die optimale Rendite gefunden werden.
Die Hauptrisiken der Strategie bestehen in der falschen Parameter-Einstellung und der Überempfindlichkeit gegenüber Marktgeräuschen. Dies erfordert Verbesserungen durch Stoppverluste, Kennzahlenfilterung und Parameter-Adaptionsoptimierung.
Insgesamt ist die Strategie eine einfache und effektive Trend-Tracking-Strategie, geeignet für die Quantifizierung und den automatischen Handel. Durch kontinuierliche Optimierung kann die Strategie-Stabilität weiter verbessert werden.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © JstMtlQC
//@version=4
strategy("Trend Following Breakout",calc_on_order_fills=true,calc_on_every_tick =false, overlay=true, initial_capital=2000,commission_value=.1,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
/////////////// INPUT ENTRY EXIT
entry= input(100, "ENTRY H/L")
exit= input(50, "EXIT H/L")
/////////////// Backtest Input
FromYear = input(2015, "Backtest Start Year")
FromMonth = input(1, "Backtest Start Month")
FromDay = input(1, "Backtest Start Day")
ToYear = input(2999, "Backtest End Year")
ToMonth = input(1, "Backtest End Month")
ToDay = input(1, "Backtest End Day")
/////////////// Backtest Setting
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => time >= start and time <= finish ? true : false
/////////////// BUY OPEN PLOT
highestpricelong = highest(high,entry)[1]
plot(highestpricelong, color=color.green, linewidth=2)
/////////////// BUY CLOSE PLOT
lowestpricelong = lowest(high,exit)[1]
plot(lowestpricelong, color=color.green, linewidth=2)
/////////////// SHORT OPEN PLOT
lowestpriceshort = lowest(low,entry)[1]
plot(lowestpriceshort, color=color.red, linewidth=2)
/////////////// SHORT CLOSE PLOT
highestpriceshort = highest(low,exit)[1]
plot(highestpriceshort, color=color.red, linewidth=2)
///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// CONDITION LONG SHORT //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
/////////////// SHORT
entryshort= crossunder(close, lowestpriceshort)
exitshort= crossover(close,highestpriceshort)
/////////////// LONG
exitlong= crossover(close, lowestpricelong)
entrylong= crossover(close,highestpricelong)
///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// LONG and SHORT ORDER //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
/////////////// LONG
if (entrylong)
strategy.entry("LongEntry", strategy.long, when = window())
if (exitlong or entryshort)
strategy.close("LongEntry", when=window())
/////////////// SHORT
if (entryshort)
strategy.entry("short", strategy.short, when = window())
if (exitshort or entrylong)
strategy.close("short", when=window())