La Donchian Channel Trend Riding Strategy est une stratégie de suivi des tendances. Elle utilise le Donchian Channel pour identifier la direction de la tendance du marché et entre sur le marché lorsqu'un signal de tendance est généré pour capturer autant que possible le mouvement de la tendance.
La stratégie est principalement basée sur le canal de Donchian. Le canal de Donchian se compose d'une bande supérieure, d'une bande inférieure et d'une bande moyenne. La bande supérieure est le plus haut niveau au cours des derniers n jours, la bande inférieure est le plus bas niveau au cours des derniers n jours, et la bande moyenne est la moyenne des bandes supérieure et inférieure. Un signal d'achat est généré lorsque le prix dépasse la bande supérieure. Un signal de vente est généré lorsque le prix dépasse la bande inférieure.
La stratégie calcule d'abord le canal de Donchian de 20 jours, y compris la bande supérieure, la bande inférieure et la bande moyenne. Elle vérifie ensuite si le prix traverse les bandes de canaux. Si le prix de clôture dépasse la moyenne mobile de 200 jours ET le prix de clôture dépasse la bande supérieure, un signal long est généré. Si le prix de clôture dépasse la moyenne mobile de 200 jours ET le prix de clôture dépasse la bande inférieure, un signal court est généré.
Après avoir entré des positions longues, le stop loss est réglé à la bande inférieure.
La stratégie présente les avantages suivants:
Il peut identifier efficacement les tendances du marché.
La combinaison avec la moyenne mobile à longue période aide à filtrer efficacement les faux signaux.
Le paramètre stop loss réglé sur les bandes de canaux permet une sortie rapide et un contrôle efficace du risque.
La logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre.
La stratégie comporte également certains risques:
Un renversement soudain de tendance peut entraîner des pertes énormes.
Risque d'optimisation des paramètres. Les paramètres du canal de Donchian nécessitent des tests et une optimisation constants, sinon cela peut affecter les performances de la stratégie.
Le canal de Donchian génère généralement des signaux de trading plus fréquents.
La stratégie peut être optimisée dans les aspects suivants:
Ajouter plus d'indicateurs pour le filtrage des signaux, par exemple des modèles de chandeliers, des indicateurs de volatilité, etc., pour éviter de faux signaux.
Optimisez des paramètres comme la longueur du canal pour trouver la combinaison optimale de paramètres.
Adopter une méthode de stop loss adaptative en fonction de la volatilité du marché et des besoins de contrôle des risques.
Classifier les signaux et adopter différents niveaux de stop loss pour différencier les signaux forts et faibles.
En général, la stratégie Donchian Channel Trend Riding est une stratégie de suivi de tendance relativement simple et pratique. Elle peut identifier efficacement les directions de tendance du marché et capturer la plupart des mouvements de tendance. Pendant ce temps, la moyenne mobile à longue période et les bandes de canaux permettent de contrôler les risques.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-16 00:00:00 period: 1h 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/ // © pratyush_trades //@version=4 strategy("Donchian Channel Strategy", overlay=true) length = input(20) longRule = input("Higher High", "Long Entry", options=["Higher High", "Basis"]) shortRule = input("Lower Low", "Short Entry", options=["Lower Low", "Basis"]) hh = highest(high, length) ll = lowest(low, length) up = plot(hh, 'Upper Band', color = color.green) dw = plot(ll, 'Lower Band', color = color.red) mid = (hh + ll) / 2 midPlot = plot(mid, 'Basis', color = color.orange) fill(up, midPlot, color=color.green, transp = 95) fill(dw, midPlot, color=color.red, transp = 95) if (close>ema(close,200)) if (not na(close[length])) strategy.entry("Long", strategy.long, stop=longRule=='Basis' ? mid : hh) if (close<ema(close,200)) if (not na(close[length])) strategy.entry("Short", strategy.short, stop=shortRule=='Basis' ? mid : ll) if (strategy.position_size>0) strategy.exit(id="Longs Exit",stop=ll) if (strategy.position_size<0) strategy.exit(id="Shorts Exit",stop=hh)