Adaptive Handelsstrategie „Turtle Breakout Retracement“


Erstellungsdatum: 2023-12-08 11:54:02 zuletzt geändert: 2023-12-08 11:54:02
Kopie: 0 Klicks: 732
1
konzentrieren Sie sich auf
1621
Anhänger

Adaptive Handelsstrategie „Turtle Breakout Retracement“

Überblick

Die Strategie basiert hauptsächlich auf dem Prinzip des Trendbrechens, kombiniert mit der Methode des Kanalbrechens, wobei die Richtung des Trends anhand von schnellen und langsamen Doppelspur-Breakings beurteilt wird. Die Strategie verfügt über eine Doppelsicherung von Durchbruchseinträgen und Rückziehungsausgängen, die effektiv auf Marktveränderungen reagieren können. Der größte Vorteil der Strategie besteht darin, dass die Rückziehung von Konten in Echtzeit überwacht werden kann.

Strategieprinzip

  1. Fast-Slow-Line-Doppelbahnen: Die Kurz- und Langstrecken werden getrennt verwendet, um die Kanäle zu bauen. Die Kurzstrecken reagieren schneller und die Langstrecken sind glatter. In Kombination mit den Doppelbahnen wird die Trendrichtung bestimmt.

  2. Breakout-Einträge: Wenn der Preis den Aufwärtskanal durchbricht, machen Sie mehr, wenn er den Abwärtskanal durchbricht, machen Sie leere Einträge.

  3. Rückzugsausgänge: maximale Rückzugsausgänge werden in Echtzeit überwacht. Sobald der Rückzugsausgang erreicht ist, wird der Ausgleich aktiv eingestellt. Der Rückzugsausgang kann an die Marktbedingungen angepasst werden.

  4. Anpassung der Positionsgröße: Die Anzahl der Positionen wird in Echtzeit an die Rechte und Interessen des Kontos angepasst, um Marktrisiken zu vermeiden. Je größer der Kontoabzug, desto weniger Positionen.

Strategische Vorteile

  1. Die beiden Bahnkanäle und die Durchbruchseinträge ermöglichen eine bessere Beurteilung der Trends.

  2. Schadensbegrenzung und effektive Kontrolle von Einzelschäden.

  3. In der Praxis ist es wichtig, dass die Konten in Echtzeit zurückgezogen werden, die Größe der Positionen aktiv angepasst wird und das Marktrisiko verringert wird.

  4. Die Größe der Positionen hängt von den Rechten und Interessen des Kontos ab, die Risikoverantwortlichkeit ist hoch und kann auf Veränderungen der Marktlage reagieren.

Strategisches Risiko

  1. Bei starken Erschütterungen kann die Rückzugskontrolle fehlschlagen, was zu einer Vergrößerung der Verluste führt.

  2. Wenn die Schnellleitung in die Neutrale Zone gelangt, kann es zu mehreren ungültigen Durchbruchsignalen kommen.

  3. Die Langleine ist zu glatt, um die schnelle Umkehrung rechtzeitig zu erfassen.

  4. Bei kombinierter Verwendung von mehreren Räumen besteht das Risiko einer Gefangenschaft bei der beidseitigen Lagerhaltung.

Richtung der Strategieoptimierung

  1. Bei starken Erschütterungen kann eine höhere Rückzugstoleranz eingestellt werden, um übermäßige Verluste zu vermeiden.

  2. Neutral-Zone-Filterung wird erweitert, um ein invalidertes Signal in der Neutral-Zone zu vermeiden.

  3. Parameteroptimierung der langsameren Strecken und Verbesserung der Reaktionsgeschwindigkeit auf schnelle Ereignisse.

  4. Die Einführung von Regeln für die Reihenfolge der offenen Lagerräume verhindert, dass Lagerräume in zwei Richtungen gehalten werden.

Zusammenfassen

Die Strategie als Ganzes ist eine effektive Strategie für den Handel mit mittleren und langen Trends. Der größte Vorteil der Strategie liegt in der Real-Time-Widerrufsüberwachung und der dynamischen Positionsanpassung. Dies ermöglicht der Strategie, die Positionsgröße automatisch anzupassen und sich stark an die Märkte anzupassen.

Strategiequellcode
//Noro
//2020

//Original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007, CURTIS FAITH, ISBN: 9780071486644) 

//@version=4
strategy("Noro's Turtles Strategy", shorttitle = "Turtles str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong = input(true, title = "Long")
needshort = input(false, title = "Short")
sizelong = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %")
sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %")
needfast = input(true, title = "Fast")
needslow = input(true, title = "Slow")
enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)
showof = input(true, title = "Show offset")
showll = input(false, title = "Show lines")
showlabel = input(true, defval = true, title = "Show label")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast
fastL = highest(enter_fast)
fastLC = lowest(exit_fast)
fastS = lowest(enter_fast)
fastSC = highest(exit_fast)

//Slow
slowL = highest(enter_slow)
slowLC = lowest(exit_slow)
slowS = lowest(enter_slow)
slowSC = highest(exit_slow)

//Lines
offset = showof ? 1 : 0
col1 = showll and needlong and needfast ? color.blue : na
col2 = showll and needshort and needfast ? color.red : na
col3 = showll and needlong and needslow ? color.blue : na
col4 = showll and needshort and needslow ? color.red : na
plot(fastL, color = col1, offset = offset)
plot(fastLC, color = col1, offset = offset)
plot(fastS, color = col2, offset = offset)
plot(fastSC, color = col2, offset = offset)
plot(slowL, color = col3, offset = offset)
plot(slowLC, color = col3, offset = offset)
plot(slowS, color = col4, offset = offset)
plot(slowSC, color = col4, offset = offset)

//Orders
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
size = strategy.position_size
lotlong = 0.0
lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1]
lotshort = 0.0
lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1]

//Fast
strategy.entry("fast L", strategy.long, lotlong, stop = fastL, when = needfast and needlong and strategy.position_size == 0 and truetime)
strategy.entry("fast S", strategy.short, lotshort, stop = fastS, when = needfast and needshort and strategy.position_size == 0 and truetime)
strategy.exit("fast L", stop = fastLC, when = needfast and needlong and strategy.position_size > 0)
strategy.exit("fast S", stop = fastSC, when = needfast and needshort and strategy.position_size < 0)

//Slow
strategy.entry("slow L", strategy.long, lotlong, stop = slowL, when = needslow and needlong and strategy.position_size == 0 and truetime)
strategy.entry("slow S", strategy.short, lotshort, stop = slowS, when = needslow and needshort and strategy.position_size == 0 and truetime)
strategy.exit("slow L", stop = slowLC, when = needslow and needlong and strategy.position_size > 0)
strategy.exit("slow S", stop = slowSC, when = needslow and needshort and strategy.position_size < 0)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("fast L")
    strategy.cancel("fast S")
    strategy.cancel("slow L")
    strategy.cancel("slow S")
    
if showlabel

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Label
    min := round(min * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)