Stratégie de rupture basée sur le commerce de tortues

Auteur:ChaoZhang est là., Date: 2023-10-17 17h22 et 34h
Les étiquettes:

img

Résumé

Cette stratégie est basée sur le célèbre système de trading de tortue, utilisant le canal Donchian pour identifier les ruptures et l'ATR pour définir un stop loss pour suivre la tendance. L'avantage est la forte capacité de contrôle du retrait en limitant efficacement la perte d'une seule transaction. Cependant, l'adaptabilité entre différents instruments de trading est faible et nécessite un ajustement des paramètres.

Principaux

La stratégie repose principalement sur deux indicateurs: le canal de Donchian et l'ATR.

Le canal Donchian est construit par le plus haut et le plus bas. La longueur par défaut du canal est de 20 jours, tracé avec le plus haut et le plus bas de 20 jours.

L'ATR mesure la volatilité du marché et est utilisé pour le réglage du stop loss. La période ATR par défaut est de 20 jours.

La logique de négociation spécifique est la suivante:

  1. Allez long quand le prix dépasse la bande supérieure.

  2. Définir un stop loss au prix bas à l'entrée moins 2N ATR.

  3. Fermer une position longue lorsque le prix dépasse la marge inférieure.

  4. Allez court quand le prix dépasse la bande inférieure.

  5. Définir un stop-loss au prix élevé à l'entrée plus 2N ATR.

  6. Fermer une position courte lorsque le prix dépasse la bande supérieure.

En résumé, la stratégie identifie la direction de la tendance et les signaux d'entrée avec le canal Donchian et contrôle le risque avec un stop loss basé sur ATR, pour suivre les tendances.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Une forte capacité de contrôle du retrait.

  2. Capacité à suivre les tendances. Donchian Channel peut identifier efficacement les ruptures et les changements de tendance.

  3. Applicable aux instruments à forte volatilité: l'ATR tient compte de la volatilité du marché lors de l'établissement du stop loss.

  4. Une logique simple et claire, facile à comprendre et à mettre en œuvre.

  5. Flexibilité pour optimiser avec le langage Python.

Analyse des risques

Certains risques de cette stratégie à noter:

  1. Les paramètres des canaux doivent être optimisés pour différents instruments et délais.

  2. Risque de stop loss consécutif: plusieurs déclencheurs de stop loss peuvent se produire dans des conditions de marché volatiles.

  3. Le paramètre ATR nécessite un backtest. ATR affecte directement le stop loss et doit être ajusté en fonction de la volatilité.

  4. Une fréquence de négociation potentiellement trop élevée.

  5. Le potentiel de profit est limité. La stratégie se concentre sur le stop loss et ne peut pas capturer pleinement les gains de tendance.

  6. Les écarts de prix peuvent déclencher directement un stop loss.

Directions d'optimisation

La stratégie peut être améliorée dans les domaines suivants:

  1. Optimiser les paramètres des canaux pour différents instruments.

  2. Ajoutez des filtres pour éviter trop de signaux sous le marché limité par la plage.

  3. Optimiser le paramètre de la période ATR et l'impact de l'essai sur le stop loss.

  4. Ajouter une entrée pyramidale pour augmenter la taille de la position pour maximiser les gains de tendance.

  5. Incorporer d'autres indicateurs tels que MACD, KD pour éviter de faux signaux.

  6. Ajuster le stop loss en fonction des coûts de glissement et de commission.

  7. Tester l'adaptabilité à travers différents instruments et optimiser les paramètres.

Résumé

En tant que version d'introduction du système de trading de tortue, cette stratégie a une logique simple et claire, une forte capacité de contrôle du tirage et peut valider efficacement les principes du trading de tortue. Mais l'adaptabilité entre les instruments est faible et les paramètres doivent être ajustés en fonction d'instruments spécifiques.


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

//@version=3
//Based on Turtle traders strategy: buy/sell on Donchian breakouts and stop loss on ATR 2x
// initial version considerations :
//// 1. Does not consider filter for avoiding new entries after winning trades (filtering rule from Turtle Strategy on 20 day breakout strategy) 
//// 2. Does not consider pyramiding (aditional entries after 1N price movements)

strategy("Turtle trading strategy (Donchian/ATR)", overlay=true)

enter_period = input(20, minval=1, title="Enter Channel")
exit_period = input(10, minval=1, title="Exit Channel")
offset_bar = input(0,minval=0, title ="Offset Bars")
direction = input("Long",options=["Long","Short"],title="Direction")
max_length = max(enter_period,exit_period)
atrmult = input(2,title="ATR multiplier (Stop Loss)")
atrperiod = input(20,title="ATR Period")

closed_pos = false
dir_long = direction == "Long"? true : false
atr = atr(atrperiod)
upper = dir_long ? highest(enter_period): highest(exit_period)
lower = dir_long ? lowest(exit_period): lowest(enter_period)
atrupper = close + atr
atrlower = close - atr
plotted_atr = dir_long ? atrlower : atrupper

//basis = avg(upper, lower)

l = plot(lower, style=line, linewidth=3, color=lime, offset=1)
u = plot(upper, style=line, linewidth=3, color=lime, offset=1)
a = plot(plotted_atr, style=line,linewidth=2,color=red,offset=1)
//plot(basis, color=yellow, style=line, linewidth=1, title="Mid-Line Average")
//break upper Donchian (with 1 candle offset) (buy signal)
break_up = (close >= upper[1])
//break lower Donchian (with 1 candle offset) (sell signal)
break_down = (close <= lower[1])
stop_loss = dir_long ? (close<=plotted_atr[1]) : (close>=plotted_atr[1])

if break_up and dir_long
    strategy.entry("buy", strategy.long, 1)
    closed_pos :=false
if (break_down or stop_loss) and dir_long
    strategy.close("buy")
    
if break_down and not dir_long
    strategy.entry("sell", strategy.short, 1)
    closed_pos :=false
if (break_up or stop_loss) and not dir_long
    strategy.close("sell")
    closed_pos :=true
    
losing_trade = strategy.equity[0]<strategy.equity[1]
//plotshape(losing_trade,text="Losing!")    
plotshape(stop_loss,style=dir_long?shape.labeldown:shape.labelup,text="Stop!")
//plot(strategy.equity)


    



Plus de