Stratégie de négociation des tortues

Auteur:ChaoZhang est là., Date: 2023-12-25 17:12:05 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de trading de la tortue est une stratégie de suivi des tendances qui suit les ruptures de momentum. Elle a été développée par le célèbre trader Richard Dennis dans les années 1980 pour prouver que les traders pourraient être nourris par des règles plutôt que nés.

La logique de la stratégie

La stratégie de trading de la tortue utilise deux paramètres N et N/2 pour construire des canaux. Plus précisément, elle calcule les prix les plus élevés et les plus bas au cours des N jours et N/2 jours les plus récents. Lorsque le prix dépasse le canal N-day, une position longue est établie. Lorsque le prix tombe en dessous du canal N/2-day, la position est fermée. De même, lorsque le prix dépasse le canal N-day vers le bas, une position courte est établie et fermée lorsque le prix dépasse le canal N/2-day.

Dans le code, N correspond àenter_slowet N/2 correspond àenter_fastLes prix les plus élevés (slowLetfastL) et les prix les plus bas (slowSetfastSLes positions longues sont ouvertes lorsque le prix dépasse le canal des 55 jours (enterL2) et se ferme lorsque le prix tombe en dessous du canal des 20 jours (exitL1Les positions courtes sont ouvertes lorsque le prix franchit le canal à la baisse des 55 jours (enterS2) et se ferme lorsque le prix dépasse le canal des 20 jours (exitS1).

Analyse des avantages

Le plus grand avantage de la stratégie de trading de la tortue est le contrôle des risques. En établissant des positions sur les écarts de prix et en s'arrêtant rapidement sur les retraits, il contrôle efficacement les pertes sur les transactions individuelles.

Un autre avantage est la sélection de paramètres simple. L'ensemble de la stratégie ne comporte que 4 paramètres qui sont faciles à comprendre et à régler. Les paramètres eux-mêmes sont également assez stables, sans nécessiter d'optimisation fréquente.

Analyse des risques

Le plus grand risque de la stratégie de trading de tortue est l'incapacité de suivre les tendances à long terme. Il peut manquer des opportunités d'entrée lorsque les tendances commencent à se former. En outre, dans des environnements d'oscillation des prix agités, la stratégie déclenchera des entrées et des sorties fréquentes, augmentant les coûts de transaction et les risques de glissement.

En outre, les paramètres fixes pourraient fonctionner de manière très différente selon les produits et les régimes du marché, ce qui nécessite un réglage manuel basé sur l'expérience.

Des possibilités d'amélioration

La stratégie de négociation des tortues peut être améliorée de plusieurs façons:

  1. Ajouter des capacités d'adaptation aux paramètres N et N/2 en fonction de la volatilité du marché et de la fréquence du signal pour rendre le système plus robuste dans tous les scénarios.

  2. Incorporer des règles de détection des tendances avant l'entrée afin d'éviter les entrées erronées sur des marchés instables.

  3. Adopter une approche multi-temporelle pour confirmer les tendances sur les périodes plus longues et effectuer des transactions sur les périodes plus courtes.

  4. Optimiser les règles de stop loss avec des stops de trailing ou des stops basés sur le temps pour réduire les retraits.

Conclusion

La stratégie de trading de la tortue suit efficacement les tendances par un système de rupture simple. Le contrôle des risques est sa plus grande force, grâce à des arrêts rapides et à la dimensionnement des positions fractionnaires fixes. Dans le même temps, nous voyons plusieurs dimensions le long desquelles la stratégie peut être étendue et optimisée pour s'adapter à plus d'instruments et de conditions de marché. Dans l'ensemble, elle fournit un moyen contrôlé par le risque de capturer les tendances des prix qui est une référence importante pour le trading quantitatif.


/*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)

Plus de