Diese Strategie verfolgt den Preistrend von Kryptowährungen, indem sie Breakout-Hoch- und Tiefpreise festlegt.
Diese Strategie verwendet hauptsächlich die gewichtete gleitende Durchschnittsmethode, um festzustellen, ob es einen offensichtlichen Aufwärtstrend oder Abwärtstrend gibt. Insbesondere werden die höchsten und niedrigsten Preise in einem bestimmten Zeitraum aufgezeichnet. Wenn der tatsächliche Handelspreis den registrierten höchsten Preis übersteigt, wird ein Aufwärtstrend beurteilt, und er wird lang gehen. Wenn der tatsächliche Handelspreis niedriger als der registrierte niedrigste Preis ist, wird ein Abwärtstrend beurteilt, und er wird kurz gehen.
Die Öffnungs- und Kurzkurse werden über den Eingabeparameter
Insbesondere ist die Hauptlogik der Strategie folgende:
Durch diese Logikschleife kann er die Auf- und Abwärtstrends des Preises erfassen und dem Trend folgen.
Der größte Vorteil dieser Strategie besteht darin, dass sie durch Anpassung der Parameter automatisch Preistrends erfassen kann, ohne manuelle Beurteilung der Trendrichtung zu benötigen. Solange die Parameter angemessen eingestellt sind, kann sie automatisch die Kursschwankungen von Kryptowährungen verfolgen.
Darüber hinaus eignet sich diese Strategie sehr gut für den quantitativen Handel und kann leicht eine automatisierte Auftragserteilung erreichen. Ohne manuelle Bedienung reduziert sie das Risiko eines emotionalen Handels und verbessert die Handelseffizienz erheblich.
Schließlich kann diese Strategie auch die Rendite maximieren, indem Parameter angepasst werden.
Das größte Risiko dieser Strategie besteht darin, dass eine unsachgemäße Einstellung der Parameter zu einem übermäßig häufigen Handel, zu erhöhten Handelsgebühren und zu Schlupfverlusten führen kann.
Darüber hinaus kann eine unsachgemäße Einstellung der Parameter auch dazu führen, dass Preistrends nicht rechtzeitig erfasst und Handelsmöglichkeiten verpasst werden.
Schließlich ist diese Strategie zu empfindlich gegenüber kurzfristigem Marktlärm, der falsche Handelssignale erzeugen kann.
Die folgenden Aspekte können für diese Strategie weiter optimiert werden:
Dies ermöglicht das Stoppen von Verlusten, wenn die Verluste einen bestimmten Prozentsatz übersteigen, um größere Verluste zu vermeiden.
Fügen Sie technische Indikatorenfilter wie gleitenden Durchschnitt, KDJ hinzu, um den allgemeinen Trend zu beurteilen, um zu viel Handel aufgrund von Kurzzeitlärm zu vermeiden.
Optimieren Sie die Parameter-Einstellungslogik. Der adaptive Änderungsmechanismus kann für ENTRY- und EXIT-Parameter statt für statische Einstellungen eingestellt werden, damit sie sich anhand der Marktbedingungen anpassen können.
Verwenden Sie maschinelles Lernen, um optimale Parameter zu trainieren.
Der größte Vorteil dieser Strategie besteht darin, dass durch die Erfassung von Preistrends automatisierter Handel erreicht wird, der die Auswirkungen menschlicher Emotionen auf den Handel reduzieren, Risiken senken und die Effizienz verbessern kann.
Die wichtigsten Risiken der Strategie bestehen in einer unsachgemäßen Einstellung der Parameter und einer Überempfindlichkeit gegenüber Marktlärm, die durch Stop-Loss, Indikatorfilter, adaptive Parameteroptimierung und mehr verbessert werden müssen.
Insgesamt handelt es sich um einen einfachen und effektiven Trend nach einer für den quantitativen und automatisierten Handel geeigneten Strategie.
/*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())