Stratégie de la tortue à double canal

Auteur:ChaoZhang est là., Date: 2024-01-05 16h44
Les étiquettes:

img

Résumé

La stratégie Double Channel Breakthrough Turtle est une stratégie de rupture qui génère des signaux de trading à l'aide de l'indicateur Donchian Channel. La stratégie établit à la fois des canaux rapides et lents en même temps. Le canal rapide est utilisé pour définir les prix stop loss, tandis que le canal lent est utilisé pour générer des signaux d'ouverture et de fermeture. Lorsque le prix franchit le rail supérieur du canal lent, allez long; lorsque le prix franchit le rail inférieur, allez court.

Principaux

La logique de base de la stratégie Double Channel Breakthrough Turtle est basée sur l'indicateur du canal de Donchian. Le canal de Donchian se compose de rails supérieurs, rails inférieurs et rails intermédiaires calculés à partir des prix les plus élevés et les plus bas.

Les rails supérieurs et inférieurs (lignes bleues) du canal lent sont utilisés pour générer des signaux de trading. Lorsque le prix traverse le rail supérieur, allez long; lorsque le prix traverse le rail inférieur, allez court. Le rail du milieu (ligne rouge) du canal rapide est utilisé pour le stop loss. Le prix de stop loss pour les positions longues est le rail du milieu du canal rapide; le prix de stop loss pour les positions courtes est également le rail du milieu du canal rapide.

Ainsi, le canal lent génère des signaux tandis que le canal rapide contrôle les risques. L'utilisation de canaux doubles assure à la fois la stabilité du signal et le contrôle des risques.

En outre, la stratégie définit également le pourcentage de risque et la taille de la position. Le pourcentage de risque est défini à 2%, et les tailles de position sont calculées en fonction du pourcentage de risque et de la volatilité du canal. Cela contrôle efficacement le risque par transaction et l'augmentation progressive de la position.

Les avantages

La stratégie de la tortue de rupture à double canal présente les avantages suivants:

  1. Une forte capacité de suivi des tendances. L'utilisation du canal Donchian pour déterminer les tendances peut capturer efficacement les tendances à moyen et long terme. La conception de double canal garantit que la stratégie ne suit que les marchés à forte tendance.

  2. La stratégie est basée sur la gestion des risques et le contrôle des risques. Le rail du milieu du canal rapide agit comme un stop-loss, de sorte que du rail supérieur au rail du milieu et du rail inférieur au rail du milieu sont des zones à risque.

  3. Les signaux de négociation stables. Les grands paramètres de canal lent nécessitent un temps relativement long pour former des canaux, évitant ainsi le commerce excessif. Alors que le canal rapide arrête les pertes et capte les corrections à court terme. Les deux se complètent pour former des signaux de négociation stables.

  4. La stratégie utilise la volatilité du canal de Donchian pour calculer la taille des positions pour le contrôle de l'exposition au risque.

  5. Les canaux doubles, les lignes de stop-loss, le fond de position sont tous clairement tracés pour une compréhension logique de la stratégie facile.

Les risques

La stratégie de la tortue à double canal comporte également certains risques:

  1. Incapable d'utiliser efficacement les prix intraday. Turtle n'ouvre des positions que sur les ruptures de canal, incapable d'utiliser une situation plus précise pour augmenter les positions. Cela peut être amélioré par l'optimisation.

  2. Les points d'arrêt de perte sont sujets à la chasse. Les points d'arrêt de perte de chemin de fer moyen fixe de la tortue peuvent être facilement atteints sur les marchés actifs. Cela nécessite un ajustement dynamique des paramètres du chemin de fer moyen.

  3. Les paramètres à double canal nécessitent un réglage fin. Les paramètres appropriés sont cruciaux pour des signaux raisonnablement stables. Les paramètres fixes actuels ne peuvent pas s'adapter aux changements du marché, des fonctionnalités adaptatives doivent être introduites.

  4. Impossible d'utiliser les informations du jour au lendemain et avant le marché. Actuellement, la stratégie ne juge que les tendances basées sur les données du marché en direct, incapable d'informer les décisions de négociation avec des actions de prix du jour au lendemain et avant le marché. Cela peut être résolu par un ajustement des données.

Directions d'optimisation

Les principales orientations d'optimisation de la stratégie de la tortue de rupture à double canal sont les suivantes:

  1. Utiliser les cours intradiens pour ajuster les positions. Les positions peuvent être ajustées en fonction de la distance du prix par rapport au canal au lieu d'un simple long/short.

  2. Des stratégies intelligentes d'arrêt de perte.

  3. Optimisation adaptative des paramètres du canal: permettre aux paramètres du canal de s'ajuster automatiquement en fonction des conditions du marché au lieu de valeurs fixes manuelles.

  4. Incorporer des informations sur le jour au lendemain et avant le début du marché.

  5. Combiner plusieurs actions et indices, appliquer la stratégie à plusieurs actions, avec des opportunités d'arbitrage entre les actions et les indices pour améliorer l'alpha.

Conclusion

En conclusion, la stratégie Double Channel Breakthrough Turtle est une tendance globale stable et efficace en suivant une stratégie avec un contrôle des risques intégré. L'utilisation double de canaux rapides et lents garantit à la fois la stabilité du signal et la gestion des risques. En outre, le fond de position, le tirage maximum et la dimensionnement de la position rendent également cette stratégie facilement gérable et optimisable. En général, il s'agit d'une stratégie quantitative de haute qualité qui mérite une recherche et une application approfondies.


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

Plus de