Stratégie de rupture du canal de Donchian

Auteur:ChaoZhang est là., Date: 2024-01-29 11:51:08 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie de rupture de canal Donchian est une stratégie de suivi de tendance. Elle forme un canal de prix en calculant les prix les plus élevés et les plus bas sur une certaine période de temps et utilise les limites du canal comme signaux d'achat et de vente.

La logique de la stratégie

Cette stratégie utilise l'indicateur du canal de Donchian pour déterminer les tendances des prix et calculer les points d'entrée et de sortie. Le canal de Donchian se compose d'un rail supérieur, d'un rail inférieur et d'un rail intermédiaire. Le rail supérieur est le prix le plus élevé sur une certaine période, le rail inférieur est le prix le plus bas et le rail intermédiaire est le prix moyen.

Les durées de la période d'entrée et de sortie peuvent être configurées indépendamment. Lorsque le prix traverse le rail inférieur vers le haut, il va long. Lorsque le prix traverse le rail supérieur vers le bas, il va court. Le point de sortie est lorsque le prix touche à nouveau le rail correspondant. Le rail du milieu peut également être utilisé comme ligne de stop-loss.

En outre, la stratégie fixe également un point de prise de profit. Le prix de prise de profit pour les positions longues est le prix d'entrée multiplié par (1 + pourcentage de prise de profit), et inversement pour les positions courtes.

En résumé, tout en jugeant la tendance, cette stratégie assure une marge suffisante pour définir des arrêts et réaliser des bénéfices.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Une logique de signal claire et une génération de signal simple et fiable.
  2. L'indicateur du canal de Donchian est insensible aux fluctuations des prix, ce qui permet de détecter la tendance.
  3. Paramètres de canal personnalisables pour s'adapter à différents actifs et délais.
  4. Les fonctions de stop loss/take profit intégrées contrôlent efficacement le risque.
  5. Un potentiel de profit élevé pour les actifs volatils comme les crypto-monnaies.

Analyse des risques

Les risques de cette stratégie comprennent:

  1. Incapable d'éviter complètement les risques liés à d'énormes fluctuations de prix malgré le stop loss.
  2. Des paramètres mal réglés peuvent entraîner une survente, ce qui augmente les coûts.
  3. Insensible aux fluctuations des prix, peut manquer certaines opportunités commerciales.

Pour atténuer les risques susmentionnés:

  1. La taille appropriée des positions et la diversification entre les actifs pour contrôler le risque global.
  2. Optimiser les paramètres pour trouver la meilleure combinaison, éventuellement en utilisant l'apprentissage automatique.
  3. Incorporer des indicateurs supplémentaires pour déterminer la fiabilité du signal.

Directions d'optimisation

Cette stratégie peut être encore optimisée dans les dimensions suivantes:

  1. Testez et optimisez plus de combinaisons de paramètres pour trouver les valeurs optimales.
  2. Incorporer des modèles d'apprentissage automatique pour identifier automatiquement les paramètres optimaux, par exemple en utilisant l'apprentissage par renforcement.
  3. Combinez d'autres indicateurs tels que les moyennes mobiles et le volume pour déterminer la tendance et la fiabilité du signal.
  4. Développer des stratégies de stop loss plus avancées, par exemple le stop loss de suivi, la sortie de l'échantillon, etc., pour mieux contrôler les risques.
  5. Élargir la stratégie à d'autres classes d'actifs pour trouver la meilleure solution.

Conclusion

En conclusion, la stratégie de rupture de canal Donchian fournit des signaux clairs et des risques contrôlables pour le trading de tendance. Elle est particulièrement adaptée aux actifs volatils comme les crypto-monnaies avec un grand potentiel de profit. Il existe également des possibilités d'optimiser davantage les paramètres et d'incorporer d'autres indicateurs, qui sont des voies pour des améliorations futures.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © algotradingcc
// Strategy testing and optimisation for free trading bot 

//@version=4
strategy("Donchian Channel Strategy [for free bot]", overlay=true )

//Long optopns
buyPeriodEnter = input(10, "Channel Period for Long enter position")
buyPeriodExit = input(10, "Channel Period for Long exit position")
isMiddleBuy = input(true, "Is exit on Base Line? If 'no' - exit on bottom line")
takeProfitBuy = input(2.5, "Take Profit (%) for Long position")
isBuy = input(true, "Allow Long?")

//Short Options
sellPeriodEnter = input(20, "Channel Period for Short enter position")
sellPeriodExit = input(20, "Channel Period for Short exit position")
isMiddleSell = input(true, "Is exit on Base Line? If 'no' - exit on upper line")
takeProfitSell = input(2.5, "Take Profit (%) for Short position")
isSell = input(true, "Allow Short?")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriodEnter)
BuyExit = isMiddleBuy ? ((highest(buyPeriodExit) + lowest(buyPeriodExit)) / 2): lowest(buyPeriodExit)

SellEnter = lowest(sellPeriodEnter)
SellExit = isMiddleSell ? ((highest(sellPeriodExit) + lowest(sellPeriodExit)) / 2): highest(sellPeriodExit)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits
TakeProfitBuy = 0.0
TakeProfitSell = 0.0
if strategy.position_size > 0
    TakeProfitBuy := strategy.position_avg_price*(1 + takeProfitBuy/100)
    
if strategy.position_size < 0
    TakeProfitSell := strategy.position_avg_price*(1 - takeProfitSell/100)

// Long Position    
if isBuy and timeRange
    strategy.entry("Long", strategy.long, stop = BuyEnter, when = strategy.position_size == 0) 
    
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TakeProfitBuy, when = strategy.position_size > 0)

// Short Position
if isSell and timeRange
    strategy.entry("Short", strategy.short, stop = SellEnter, when = strategy.position_size == 0) 
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TakeProfitSell, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()


Plus de