Basierend auf der Super-Trend-Strategie


Erstellungsdatum: 2024-02-02 11:11:48 zuletzt geändert: 2024-02-02 11:11:48
Kopie: 0 Klicks: 782
1
konzentrieren Sie sich auf
1617
Anhänger

Basierend auf der Super-Trend-Strategie

Überblick

Diese Strategie verwendet die Übertrend-Indikatoren, um die Preisentwicklung zu ermitteln und bei Trendwechsel eine Über- oder Unterposition einzugehen. Die Strategie erlaubt die Anpassung der ATR-Zyklen und der ATR-Multiplikatoren, um die Parameter zu optimieren. Zusätzlich bietet die Strategie die Möglichkeit, die ATR-Berechnung zu ändern, um ein etwas anderes Ergebnis zu erzielen.

Die Strategie bietet auch eine eingebaute Date-Range-Einstellung und die Funktion, nur innerhalb bestimmter Zeiträume zu handeln. Dies ist besonders nützlich für Aktien, die innerhalb eines Tages gehandelt werden. Wenn die Time-Range-Option aktiviert ist, kann die Option ausgewählt werden, sofort zu Beginn der Zeiträume in die aktuelle Position einzutreten oder nach einer Trendwende in die erste Liste einzutreten.

Die Strategie kann auch Stop-Loss- und Stop-Off-Basis auf Prozent setzen. In den meisten Fällen ist kein zusätzlicher Stop-Off-Basis erforderlich, da der Übertrend selbst einen Stop-Off-Basis auf ATR bietet. Daher kann nur ein Stop-Off-Basis aktiviert werden, um den Ausstieg zu optimieren.

Schließlich verfügt die Strategie über eine benutzerdefinierte Funktion für die Warnmeldung von Eingaben und Ausstiegen von Transaktionen, die für den automatisierten Handelsservice verwendet werden können.

Strategieprinzip

Die Hypertrend-Strategie basiert auf folgenden Hauptprinzipien:

  1. Berechnung des ATR-Wertes: Sie können die Berechnung mit der SMA oder mit dem integrierten ATR-Wert auswählen. Die Formel der SMA-Version lautet:
   atr2 = sma(tr, Periods) 
  1. Berechnung der Auf- und Abfahrt: Auffahrt ist der Preis abzüglich der ATR-Multiplikation mit der ATR-Multiplikation, Abfahrt ist der Preis plus die ATR-Multiplikation mit der ATR-Multiplikation.
   up = close - (Multiplier * atr)
   dn = close + (Multiplier * atr)
  1. Beurteilen Sie die Beziehung zwischen dem Preis und dem Kurs und berechnen Sie die Richtung des Trends. Wenn der Preis oben durch den Kurs geht, ist der Trend mehrköpfig, wenn der Preis unten durch den Kurs geht, ist der Trend leer.
   trend := trend == -1 and close > dn ? 1 : trend == 1 and close < up ? -1 : trend 
  1. Es erzeugt ein Handelssignal beim Trendwechsel, wie bei einem Verkaufssignal beim Wechsel von einem Mehrkopf zu einem Leerkopf:
   sellSignal = trend == -1 and trend[1] == 1
  1. Die Eintrittswahl wird anhand von Handelssignalen und anderen Bedingungen gefiltert.

  2. Setzen Sie Stop-Loss- und Stop-Stops, um Gewinne zu sichern oder Risiken zu vermeiden.

Dies sind die wichtigsten Punkte der Hypertrend-Strategie, die in Kombination mit Parameteroptimierung zu besseren Handelsergebnissen führen kann.

Strategische Vorteile

Diese Strategie hat folgende Vorteile:

  1. Der Hypertrend-Indikator selbst ist ein sehr nützliches Instrument zur Verfolgung von Kursbewegungen.

  2. Die ATR-Parameter sind einstellbar und können für verschiedene Sorten optimiert werden, um die optimale Kombination von Parametern zu erhalten. Die SMA-Berechnung bietet auch eine andere Option.

  3. Die Zeitspanne für die Rückmeldung und die Festplatte kann angepasst werden, um den Bedürfnissen der verschiedenen Handelszeiten gerecht zu werden.

  4. Es gibt die Möglichkeit, sofort in die erste Liste einzutreten oder auf ein Signal zu warten, je nach Sortenmerkmal.

  5. Die eingebaute Stop-Loss-Einstellung erhöht die Risikobereitschaft der Strategie oder lockert mehr Gewinne.

  6. Benutzerdefinierte Handels-Tipps, die in automatisierte oder robotergestützte Handelssysteme integriert werden können, um eine unbemannte Überwachung zu ermöglichen.

Strategisches Risiko

Die Strategie birgt auch Risiken:

  1. Der Übertrend kann mehr falsche Signale erzeugen und muss in Kombination mit anderen Indikatoren gefiltert werden.

  2. Die falschen ATR-Parameter können zu häufigen oder verpassten Trends führen. Die Parameter müssen optimiert werden, um eine optimale Balance zu erzielen.

  3. Ein Stop-Loss-Punkt, der zu nahe ist, kann zu früh aus einer profitablen Position aussteigen, und ein Stop-Loss-Punkt, der zu weit entfernt ist, kann nicht ausreichend Gewinne erzielen.

  4. Die falsche Zeitspanne kann dazu führen, dass die Haupthandelszeit verpasst wird oder dass die Kaution unnötig belegt wird.

Diese Risiken können durch entsprechende Anpassungen der Parameter oder durch Hinzufügen von Filterbedingungen angegangen werden, um die Strategie zu stabilisieren.

Richtung der Strategieoptimierung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Versuchen Sie, verschiedene ATR-Zyklusparameter auszuprobieren, um die richtige Balance zu finden. Im Allgemeinen ist zwischen 10 und 20 ideal.

  2. Verschiedene ATR-Multiplikatorparameter, in der Regel 2-5 sind am besten geeignet, können schrittweise angepasst werden, um den optimalen Wert zu finden.

  3. Versuchen Sie, andere Indikatoren für die Mehrflughäbe hinzuzufügen, z. B. MACD, KD usw., um falsche Signale zu filtern.

  4. Optimierung der Stop-Loss-Parameter zur Ermittlung der optimalen Parameterkombination.

  5. Verschiedene Handelszeiträume werden getestet. Kurze Tageszeiten sind für kürzere Zeiträume geeignet.

  6. Versuchen Sie, die automatische Auswahl von Verträgen zu verfolgen, die eine hohe Liquidität oder eine hohe Volatilität aufweisen.

Zusammenfassen

Die Hypertrend-Strategie ist eine allgemein verbreitete und praktische Trendverfolgungsstrategie. Sie hat die Eigenschaften eines parametrisch anpassbaren und effizienten Trendverfolgungssystems, aber auch bestimmte Risiken, die vermieden werden müssen. Durch die Optimierung der Parameter und die Hinzufügung von CONDITIONS kann die Strategie zu einem zuverlässigen, quantifizierten Handelssystem optimiert werden, um eine stabile Alpha zu erhalten.

Strategiequellcode
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
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/
// © REV0LUTI0N

//@version=4

// Strategy
strategy("Supertrend Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
enableentry = input(true, title="Enter First Trade ASAP")
waitentry = input(false, title="Wait To Enter First Trade")

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
Long = (trend == 1 ? up : na)
buySignal = trend == 1 and trend[1] == -1

dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
Short = (trend == 1 ? na : dn)
sellSignal = trend == -1 and trend[1] == 1

// Strategy Backtesting
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100

longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)

plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if Long and time_cond and timetobuy and enableentry
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if Short and time_cond and timetobuy and enableentry
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if buySignal and time_cond and timetobuy and waitentry
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if sellSignal and time_cond and timetobuy and waitentry
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesl and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
    
if strategy.position_size > 0 and enabletp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)