Cette stratégie est un système de trading qui combine l'indicateur Coral Trend avec le canal Donchian. En capturant avec précision l'élan du marché et en fournissant plusieurs confirmations de ruptures de tendance, elle filtre efficacement les faux signaux dans les marchés oscillants et améliore la précision des transactions.
La logique de base repose sur l'effet synergique de deux indicateurs principaux: Indicateur de tendance des coraux: Calcule une valeur lissée de (haut + bas + proche) / 3 et la compare au prix de clôture actuel pour déterminer la direction de la tendance. Donchian Channel: Détermine si le prix dépasse les niveaux clés en calculant les prix les plus élevés et les plus bas au cours d'une période définie par l'utilisateur.
Le système génère des signaux longs lorsque les deux indicateurs confirment une tendance haussière (coralTrendVal == 1 et donchianTrendVal == 1), et des signaux courts lorsque les deux confirment une tendance baissière (coralTrendVal == -1 et donchianTrendVal == -1).
Cette stratégie réalise un système de suivi de tendance robuste grâce à de multiples mécanismes de confirmation de tendance et à des paramètres flexibles. Ses caractéristiques adaptatives et sa logique de signal claire la rendent adaptée à divers délais de négociation et environnements de marché.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-16 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Coral Tides Strategy", shorttitle="CoralTidesStrat", overlay=true) // === Inputs === dlen = input.int(defval=20, title="Donchian Channel Period", minval=10) coralPeriod = input.int(defval=14, title="Coral Trend Period") // === Functions === // Coral Trend Calculation coralTrend(period) => smooth = (high + low + close) / 3 coral = ta.ema(smooth, period) trend = 0 trend := close > coral ? 1 : close < coral ? -1 : trend[1] [trend, coral] // Donchian Trend Calculation donchianTrend(len) => hh = ta.highest(high, len) ll = ta.lowest(low, len) trend = 0 trend := close > hh[1] ? 1 : close < ll[1] ? -1 : trend[1] trend // === Trend Calculation === [coralTrendVal, coralLine] = coralTrend(coralPeriod) donchianTrendVal = donchianTrend(dlen) // === Signal Logic === var int trendState = 0 buySignal = false sellSignal = false if (coralTrendVal == 1 and donchianTrendVal == 1 and trendState != 1) buySignal := true sellSignal := false trendState := 1 else if (coralTrendVal == -1 and donchianTrendVal == -1 and trendState != -1) sellSignal := true buySignal := false trendState := -1 else buySignal := false sellSignal := false // === Strategy Execution === // Entry Signals if (buySignal) strategy.entry("Long", strategy.long) if (sellSignal) strategy.entry("Short", strategy.short) // === Plots === // Coral Trend Line plot(coralLine, color=color.green, linewidth=2, title="Coral Trend Line") // Buy/Sell Signal Labels if buySignal label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.normal) if sellSignal label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.normal)