Eine Turtle-Trading-Strategie, die das Breakout-Momentum verfolgt


Erstellungsdatum: 2023-12-25 17:12:05 zuletzt geändert: 2023-12-25 17:12:05
Kopie: 0 Klicks: 774
1
konzentrieren Sie sich auf
1623
Anhänger

Eine Turtle-Trading-Strategie, die das Breakout-Momentum verfolgt

Überblick

Die Turtle-Trading-Strategie ist eine Trend-Tracking-Strategie, die auf die Dynamik von Durchbrüchen abzielt. Sie wurde in den 1980er Jahren von dem berühmten Händler Richard Dennis entwickelt, um zu überprüfen, ob Händler durch Regeln, die nicht inborn sind, gepflegt werden können. Die Kernidee der Strategie ist es, Preis-Durchbrüche zu verfolgen und Trends zu verfolgen, während die Fundmanagement-Prinzipien streng eingehalten werden, um das Abwärtsrisiko zu begrenzen.

Strategieprinzip

Die Strategie verwendet die beiden Parameter N und N/2, um die Kanäle zu erstellen. Konkret werden die höchsten und niedrigsten Preise der letzten N Tage und N/2 Tage berechnet. Es werden Multiple-Positionen erstellt, wenn die Preise über die N-Tage-Kanäle hinausgehen, und Platten erstellt, wenn die Preise unter die N/2-Tage-Kanäle fallen.

N entsprichtenter_slow, N/2 entsprichtenter_fast│ die höchsten Preise der letzten 55 Tage bzw. der letzten 20 TageslowLUndfastLMindestpreiselowest(slowSfastS)。当价格超过55天通道时做多(enterL2),当价格跌破20天通道时平多仓(exitL1);当价格跌破55天通道时做空(enterS2),当价格超过20天通道时平空仓(exitS1`)。

Analyse der Stärken

Der größte Vorteil der Strandhandelsstrategie liegt in der Risikokontrolle. Durch die Einrichtung von Positionen bei einem Preisbruch und die schnelle Beendigung von Verlusten bei einem Preisrückzug können einzelne Verluste effektiv kontrolliert werden. Gleichzeitig wird das Risiko durch die Anwendung des Grundsatzes der Festanteilungsfinanzierung weiter reduziert.

Ein weiterer Vorteil ist die einfache Auswahl der Parameter. Die gesamte Strategie besteht aus nur 4 Parametern, die leicht zu verstehen und anzupassen sind. Die Parameter selbst sind relativ stabil und müssen nicht häufig optimiert werden.

Risikoanalyse

Die größte Gefahr bei einer Seehandelsstrategie besteht darin, dass sie nicht in der Lage ist, einen langfristigen Trend zu verfolgen. Wenn sich ein Trend bildet, kann die Strategie eine Eintrittsgelegenheit verpassen. Außerdem wird die Strategie häufig in einem Preis-Schwanktrend platziert, was die Handelskosten und das Risiko eines Ausrutschpunktes erhöht.

Darüber hinaus können die festgelegten Parameter-Einstellungen unter verschiedenen Sorten und Marktumgebungen stark variieren. Dies erfordert eine Anpassung durch manuelle Erfahrung.

Optimierungsrichtung

Die Optimierung der Strategie für den Kauf und Verkauf von Seehunden kann in folgenden Punkten erfolgen:

  1. Erweiterte Anpassung der Parameter. Die Anpassung der Parameter für N, N/2 an die Marktvolatilität und die Signalfrequenz erlaubt eine automatische Anpassung an weitere Szenarien.

  2. Hinzugefügt wird ein Trend-Regel. Bevor man eintritt, muss man die Richtung des Trends bestimmen, um einen falschen Einstieg in eine preisschwankende Situation zu vermeiden.

  3. Einheitliche Strategien in Kombination mit mehreren Zeitperioden. Die Richtung der Tendenz wird in höheren Zeitperioden festgelegt, die Eintrittszeit in niedrigeren Zeitperioden.

  4. Optimierung der Stop-Loss-Strategie. Trailing Stop-Loss oder Zeit-Stop-Loss, reduziert Rückzug.

Zusammenfassen

Die Seagull-Handelsstrategie ermöglicht einen effektiven Trend-Tracking durch ein einfaches Durchbruchssystem. Die Risikokontrolle ist der größte Vorteil der Strategie, dank schnellem Stop-Loss- und Fixed-Funds-Management. Gleichzeitig sehen wir auch, dass die Strategie in mehreren Dimensionen erweitert und optimiert werden kann, um sich an mehr Sorten und Marktumgebungen anzupassen.

Strategiequellcode
/*backtest
start: 2022-12-24 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//oringinally coded by tmr0, modified by timchep
//original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007) CURTIS FAITH
strategy("Turtles", shorttitle = "Turtles", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100)
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////

shortingEnabled = input(title="Enable Shorting?", type=bool, defval=true)

enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)

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

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

enterL1 = high > fastL[1] 
exitL1 = low <= fastLC[1] 
enterS1 = low < fastS[1]
exitS1 = high >= fastSC[1]

enterL2 = high > slowL[1] 
exitL2 = low <= slowLC[1] 
enterS2 = low < slowS[1]
exitS2 = high >= slowSC[1]


if testPeriod()
    strategy.entry("fast L", strategy.long, when = enterL1) 
    
    if not enterL1
        strategy.entry("slow L", strategy.long, when = enterL2)
        
    strategy.close("fast L", when = exitL1)
    strategy.close("slow L", when = exitL2)

if shortingEnabled and testPeriod()
    strategy.entry("fast S", strategy.short, when = enterS1)
    if not enterS2
        strategy.entry("slow S", strategy.short, when = enterS2)
        
    strategy.close("fast S", when = exitS1)
    strategy.close("slow S", when = exitS2)