Schildkrötenhandelsstrategie auf der Grundlage von Donchian-Kanälen

Schriftsteller:ChaoZhang, Datum: 2024-02-26 14:35:02
Tags:

img

Übersicht

Die Tang Anqi Turtle Trading Strategie ist eine sehr vereinfachte Version der ursprünglichen Turtle Trading Strategie. Sie unterscheidet sich stark von der ursprünglichen Turtle Strategie. Die Strategie verwendet zwei Donchian-Kanäle, einen schnellen Kanal und einen langsamen Kanal. Die Kanalperioden werden vom Benutzer festgelegt, mit Standardwerten von 20 Bars für den schnellen Kanal und 50 Bars für den langsamen Kanal. Die Strategie nutzt die oberen und unteren Bands des langsamen Kanals zum Eintritt in Trades und das mittlere Band des schnellen Kanals zum Setzen von Stop Loss.

Strategie Logik

Die Kernlogik dieser Strategie lautet:

  1. Berechnen Sie den schnellen Donchian-Kanal: Das obere Band ist das höchste Hoch über die vergangenen schnellen Balken, das untere Band ist das niedrigste Tief und das mittlere Band ist der Durchschnitt der oberen und unteren Bande.

  2. Berechnen Sie den langsamen Donchian Channel: Das obere Band ist das höchste Hoch über die letzten langsamen Balken, das untere Band ist das niedrigste Tief.

  3. Wenn es keine Position gibt, wird ein langes Signal ausgelöst, wenn der Preis das obere Band des langsamen Kanals berührt, und ein kurzes Signal wird ausgelöst, wenn der Preis das untere Band des langsamen Kanals berührt.

  4. Nach Eröffnung einer Position wird das mittlere Band des schnellen Kanals als Stop-Loss verwendet.

  5. Schließen Sie die Position, wenn während des Haltezeitraums ein entgegengesetztes Signal als das Eröffnungssignal vorliegt.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Donchian-Kanäle und bewegliche Stop-Loss sind leicht zu verstehen, geeignet für Anfänger.

  2. Anpassbare Parameter: Benutzer können die Parameter anhand von Handelsprodukten und Zeitrahmen anpassen, um sich an verschiedene Marktumgebungen anzupassen.

  3. Wenige widersprüchliche Handelssignale. stützt sich ausschließlich auf Preisbrechungen der Kanalbänder, vermeidet falsche Signale von gängigen Indikatoren.

  4. Automatisches Stop-Loss-Management. Der bewegliche Stop-Loss basierend auf dem schnellen Kanal-Mitteband kann Verluste bei einzelnen Trades begrenzen.

Risikoanalyse

Zu den Risiken dieser Strategie gehören:

  1. Mehr Stop-Loss, wenn der Trend unklar ist.

  2. Wenn sich der Trend umkehrt, werden sich schwebende Gewinne in der vorherigen Trendrichtung in Verluste verwandeln.

  3. Die falsche Einstellung der Parameter führt zu einer übermäßigen Aggressivität oder zu einer übermäßigen Konservativität.

  4. Hohe Abhängigkeit vom automatisierten Handel. Die Stabilität des Servers ist wichtig, um Ausnahmen zu vermeiden, die zum Scheitern beim automatisierten Handel führen.

Zur Verringerung der oben genannten Risiken können Parameter optimiert, die Positionsgröße angemessen eingeschränkt und Risikomanagementmodule hinzugefügt werden.

Optimierungsrichtlinien

Die Strategien können in folgenden Bereichen verbessert werden:

  1. Fügen Sie Filter für Eintrittssignale hinzu, um zu vermeiden, dass Sie Trendumkehrsignale feststellen.

  2. Optimierung von Parametern wie Kanalzeiten und Positionsgrößen, um unterschiedliche Handelsinstrumente besser zu integrieren.

  3. Zusätzliche Risikomanagement-Module wie maximale Zugriffsgrenzen und tägliche Verlustgrenzen, um bei extremen Ereignissen übermäßige Verluste zu vermeiden.

  4. Verbessern Sie Stop-Loss-Strategien, z. B. setzen Sie Trailing-Stop-Loss ein, um Stops an Markttrends anpassungsfähiger zu machen.

Schlussfolgerung

Zusammenfassend ist die Tang Anqi Turtle Trading Strategy ein einfaches Trendfolgensystem. Ihre Vorteile liegen in ihrer Einfachheit des Verständnisses und der Automatisierung. Aber sie birgt auch bestimmte Risiken, und weitere Optimierungen an Parametern und Risikomanagement sind erforderlich, um sie praktischer zu machen. Mit Maßnahmen wie Parameter-Tuning, Hinzufügen von Filtern und Risikokontrollmodulen kann die Strategie im Live-Handel bessere Ergebnisse erzielen.


/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's SimpleTurtle Strategy", shorttitle = "SimpleTurtle 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, defval = true, title = "Long")
needshort = input(true, defval = true, 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, %")
fast      = input(20, minval=1)
slow      = input(50, minval=1)
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(false, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
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")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc)
plot(ls, offset = offset, color = colorpc)
plot(center, offset = offset, color = colorsl)

//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)

//Orders
truetime = true
lotlong = 0.0
lotshort = 0.0
lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1]
lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1]

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and truetime)
strategy.exit("Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if true
    strategy.close_all()
    strategy.cancel("fast L")
    strategy.cancel("fast S")
    strategy.cancel("slow L")
    strategy.cancel("slow S")
    
if showdd

    //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)
    la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)

Mehr