La Contrarian Donchian Channel Touch Entry Strategy est une stratégie de trading quantitative basée sur l'indicateur Donchian Channel.
La stratégie entre dans des positions longues / courtes lorsque le prix touche la bande supérieure / inférieure du canal de Donchian. Les niveaux de stop loss et de take profit sont définis pour chaque transaction. Après un stop loss, il y aurait une pause pendant un certain nombre de barres avant de prendre un nouveau commerce dans le même sens.
La stratégie utilise le canal de Donchian de 20 périodes, composé de la bande supérieure, de la bande inférieure et de la ligne moyenne.
Allez long lorsque le prix touche la bande inférieure; allez court lorsque le prix touche la bande supérieure.
Une pause (par exemple 3 barres) est requise après un stop loss précédent dans le même sens pour éviter de poursuivre les tendances.
Pour chaque transaction, définir un pourcentage fixe de stop loss (par exemple 22%) et un bénéfice de prise dynamique calculé sur la base du ratio risque/rendement (par exemple 2)
Utilisez un stop-loss de trailing lors des transactions:
Pour les transactions longues, si le prix dépasse la ligne médiane, ajuster le stop loss au milieu du prix d'entrée et de la ligne médiane.
À l'inverse, pour les positions courtes qui passent sous la ligne médiane.
Attrapez les mouvements les plus populaires en utilisant les évasions du canal Donchian.
L'entrée de contact contrariaire s'aligne avec le trading contre l'idée de tendance.
Gestion efficace du risque avec pause stop-loss et arrêt trailing.
Des règles claires et faciles à mettre en œuvre.
Des piqûres sur les marchés latéraux pour un système suivant la tendance.
Le stop loss fixe pourrait être sujet à être arrêté prématurément.
Un ajustement trop agressif pourrait faire échouer trop tôt les transactions rentables.
L'optimisation des paramètres est cruciale.
Optimisez la période de révision du canal Donchian pour obtenir les meilleurs paramètres.
Incorporer des règles de dimensionnement de la position, par exemple réinitialiser périodiquement le nombre de pauses.
Ajoutez des filtres à l'aide d'autres indicateurs pour éviter les fausses éruptions.
Expérience avec le stop loss dynamique.
La stratégie Contrarian Donchian Channel Touch Entry intègre l'identification des tendances, la gestion des risques et plus encore.
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Contrarian Donchian Channel Strategy - Touch Entry with Post-SL Pause and Trailing Stop", overlay=true, default_qty_value=0.01, default_qty_type=strategy.percent_of_equity) // Inputs length = input(20, minval=1, title="Donchian Channel Length") riskRewardRatio = input(2, title="Risk/Reward Ratio") stopLossPercent = input(0.22, title="Stop Loss (%)") / 100 pauseCandles = input(3, minval=1, title="Pause After SL (Candles)") // Donchian Channel Calculation upper = highest(high, length) lower = lowest(low, length) centerline = (upper + lower) / 2 // Calculating the Centerline // Plotting Donchian Channel and Centerline plot(upper, color=color.red, title="Upper Band") plot(lower, color=color.green, title="Lower Band") plot(centerline, color=color.blue, title="Centerline") // Tracking Stop Loss Hits and Pause var longSLHitBar = 0 var shortSLHitBar = 0 var int lastTradeDirection = 0 // 1 for long, -1 for short, 0 for none // Update SL Hit Bars if (strategy.position_size[1] > 0 and strategy.position_size == 0) if (close[1] < strategy.position_avg_price[1]) longSLHitBar := bar_index lastTradeDirection := 1 if (strategy.position_size[1] < 0 and strategy.position_size == 0) if (close[1] > strategy.position_avg_price[1]) shortSLHitBar := bar_index lastTradeDirection := -1 // Entry Conditions - Trigger on touch longCondition = (low <= lower) and (bar_index - longSLHitBar > pauseCandles or lastTradeDirection != 1) shortCondition = (high >= upper) and (bar_index - shortSLHitBar > pauseCandles or lastTradeDirection != -1) // Trade Execution if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Initial Stop Loss and Take Profit Calculation stopLoss = strategy.position_avg_price * (1 - stopLossPercent) takeProfit = strategy.position_avg_price * (1 + stopLossPercent * riskRewardRatio) // Trailing Stop Loss Logic var float trailingStopLong = na var float trailingStopShort = na // Update Trailing Stop for Long Position if (strategy.position_size > 0) if (close > centerline) trailingStopLong := (strategy.position_avg_price + centerline) / 2 stopLoss := na(trailingStopLong) ? stopLoss : max(trailingStopLong, stopLoss) // Update Trailing Stop for Short Position if (strategy.position_size < 0) if (close < centerline) trailingStopShort := (strategy.position_avg_price + centerline) / 2 stopLoss := na(trailingStopShort) ? stopLoss : min(trailingStopShort, stopLoss) // Setting Stop Loss and Take Profit for each trade strategy.exit("SL_TP_Long", "Long", stop=stopLoss, limit=takeProfit) strategy.exit("SL_TP_Short", "Short", stop=stopLoss, limit=takeProfit)