Dual Channel Breakout Turtle Strategie


Erstellungsdatum: 2024-01-05 16:16:44 zuletzt geändert: 2024-01-05 16:16:44
Kopie: 1 Klicks: 603
1
konzentrieren Sie sich auf
1617
Anhänger

Dual Channel Breakout Turtle Strategie

Überblick

Die Double-Channel-Breakout-Turtle-Strategie ist eine Breakout-Strategie, bei der die Donchian-Channel-Indikatoren genutzt werden, um ein Handelssignal zu erstellen. Die Strategie erstellt gleichzeitig einen schnellen und einen langsamen Kanal. Der schnelle Kanal dient zur Einstellung eines Stop-Loss-Preises, der langsame Kanal zur Erzeugung eines Positionsöffnungs- und Positionssignals.

Strategieprinzip

Die Kernlogik der Dual-Channel-Breakout-Turtle-Strategie basiert auf den Donchian-Channel-Indikatoren. Die Donchian-Channel-Strategie basiert auf den Höchst- und Tiefpreisen und umfasst die Oberbahn, Unterbahn und Mittelbahn. Die Strategie erzeugt gleichzeitig schnelle und langsame Kanäle, deren Parameter vom Benutzer festgelegt werden und die Standard-Schnellkanal-Periode 50 K-Linien und die Schnellkanal-Periode 20 K-Linien beträgt.

Die oberen und unteren Bahnen der langsamen Bahn (blaue Linie) werden verwendet, um Handelssignale zu erzeugen. Wenn der Preis die Oberbahn durchbricht, machen Sie einen Plus; Wenn der Preis die Unterbahn durchbricht, machen Sie einen Ausfall. Die mittlere Bahn der schnellen Bahn (rote Linie) wird verwendet, um zu stoppen.

Auf diese Weise ist der langsame Kanal für die Signalerzeugung verantwortlich, der schnelle für den Stop-Loss, und die Verwendung der doppelten Kanäle gewährleistet sowohl die Stabilität des Handelssignals als auch die Risikokontrolle. Die Hintergrundfarbe zeigt die Richtung der aktuellen Position an, grün für mehrere und rot für leere Positionen.

Darüber hinaus wurde in der Strategie ein Risikograd und eine Positionsverwaltung festgelegt. Der Risikograd ist auf 2% festgelegt, die Positionen werden nach dem Risikograd und der Channel-Volatilität berechnet. So kann ein einzelnes Risiko und eine schrittweise Verlagerung effektiv kontrolliert werden.

Analyse der Stärken

Die Strategie der “Turtle-Doppel-Breakthrough” hat folgende Vorteile:

  1. Trendschutz ist eine gute Möglichkeit. Die Donchian-Kanal-Beschlüsse können Trendschutz nutzen, um die mittleren und langen Trends effektiv zu erfassen. Die Doppelkanal-Design ermöglicht die Strategie, nur die stärkeren Trends zu verfolgen.

  2. Rückzug und Risikokontrolle. Die Schnellstraßen-Mittelbahn ist ein Stop-Loss, von der oberen Bahn zur mittleren Bahn und von der unteren Bahn zur mittleren Bahn ist ein Risikobereich, was sicherstellt, dass jeder einzelne Verlust kontrolliert wird. Die Strategie setzt auch einen Risikograd ein, der den maximalen Verlust der Konten direkt einschränkt.

  3. Das Handelssignal ist stabil. Die langsameren Kanäle haben große Parameter, die Kanäle brauchen eine längere Zeit, um häufige Transaktionen zu vermeiden. Die schnellen Kanäle als Stop-Loss können kurzfristige Anpassungen erfassen.

  4. Positions- und Risikomanagement verbessert. Die Strategie nutzt die Donchian-Kanal-Volatilität, um die Positionsgröße zu berechnen und die Risikogruppe zu kontrollieren. Die schrittweise Positionserhöhung macht die Positionen der mehrflächigen Parteien ausgeglichen.

  5. Die visualisierten Indikatoren sind intuitiv. Die Doppelkanal-, Stop-Loss- und Positionshintergründe sind klar dargestellt, die Handelslogik ist naheliegend. Gleichzeitig werden wichtige Indikatoren wie maximale Rücknahme und maximale Verluste angezeigt.

Risikoanalyse

Es gibt einige Risiken bei der Doppelkanal-Breakthrough-Strategie:

  1. Die Turtle-Strategie eröffnet nur bei einem Durchbruch der Kanäle und kann keine genaueren Situationen nutzen, um die Position zu erhöhen. Dies kann durch Optimierung verbessert werden.

  2. Die Stop-Loss-Punkte sind leicht zu verfolgen. Der Stop-Loss-Punkt der Turtle-Strategie ist die feste mittlere Bahn des schnellen Kanals. In aktiven Märkten kann dies mit einem Stop-Loss abgedeckt werden. Dies erfordert eine dynamische Anpassung der mittleren Bahnparameter.

  3. Die Doppelkanalparameter müssen fein eingestellt werden. Die Kanalparameter müssen richtig eingestellt werden, um ein vernünftiger und stabiler Signal zu erzeugen. Die derzeitigen festen Parameter können sich nicht an die Veränderungen des Marktes anpassen und müssen eine Anpassungsfunktion einführen.

  4. Es ist nicht möglich, nachträgliche und vorträgliche Informationen zu nutzen. Die aktuelle Strategie beurteilt die Trends nur anhand der tatsächlichen Marktlage und kann keine Handelsentscheidungen anhand der Marktlage vor und nach der Börse treffen. Dies kann durch eine Datenanpassung verbessert werden.

Optimierungsrichtung

Die Turtle-Doppelkanal-Breakthrough-Strategie basiert auf folgenden Optimierungsmöglichkeiten:

  1. Positionsgröße anhand der Entfernung zwischen dem Preis und dem Kanal auf der Plattform anpassen, anstatt einfach zusätzliche Leerstellen vorzunehmen.

  2. Intelligentierung der Stop-Loss-Strategie. Fixed Stop-Loss-Mid-Tracks werden in dynamische Berechnungen umgewandelt, um zu verhindern, dass die Stop-Loss-Punkte von einem verfolgten Schlag getroffen werden.

  3. Die Optimierung der Kanalparameter ist anpassungsfähig. Die Kanalparameter können automatisch an die Marktbedingungen angepasst werden, anstatt manuell feste Werte festzulegen.

  4. In strategischen Entscheidungen sollte nicht nur auf die realen Preise Bezug genommen werden, sondern auch die Preise vor und nach der Börse berücksichtigt werden, um eine umfassendere Marktlage zu erhalten.

  5. In Kombination mit mehreren Aktien oder Indizes. Die Strategie kann auf mehrere Aktien angewendet werden, wobei arbitragefähige Geschäfte zwischen verschiedenen Aktien und Indizes konfiguriert werden können, um Alpha zu erhalten.

Zusammenfassen

Die Dual-Channel-Breakout-Turtle-Strategie ist insgesamt eine stabile, effiziente und risikokontrollierte Trend-Tracking-Strategie. Die Strategie verwendet sowohl schnelle als auch langsame Kanäle, um die Stabilität des Handelssignals zu gewährleisten und Risikomanagement durchzuführen. Darüber hinaus erleichtern die Hintergrundfarbe, die Maximalrücknahme und die Positionsverwaltung die Verwaltung und Optimierung der Strategie.

Strategiequellcode
/*backtest
start: 2023-12-05 00:00:00
end: 2024-01-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle 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")
risk      = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast      = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow      = input(50, minval = 1, title = "Slow channel (for entries)")
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(true, 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, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")

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

//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true

//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")
    
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]))
    
    //Max loss size
    equity := strategy.position_size == 0 ? strategy.equity : equity[1]
    loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
    maxloss := min(nz(maxloss[1]), loss)
    
    //Label
    min := round(min * 100) / 100
    maxloss := round(maxloss * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
    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)