
La stratégie est un système de trading de suivi de tendance qui combine l’indicateur Coral Trend avec le canal Donchian. En capturant avec précision la dynamique du marché et les multiples confirmations des percées de tendance, les faux signaux du marché volatil sont efficacement filtrés, améliorant ainsi la précision des transactions. La stratégie utilise la technologie de moyenne mobile adaptative, qui peut ajuster dynamiquement les paramètres en fonction des conditions du marché, afin de pouvoir maintenir des performances stables dans différents environnements de marché.
La logique fondamentale de la stratégie repose sur la synergie de deux indicateurs principaux :
Lorsque les deux indicateurs confirment une tendance à la hausse (coralTrendVal == 1 et donchianTrendVal == 1), le système génère un signal long ; lorsque les deux indicateurs confirment une tendance à la baisse (coralTrendVal == -1 et donchianTrendVal == -1), le système génère un signal court. La stratégie utilise une machine d’état (trendState) pour suivre l’état de tendance actuel et éviter les signaux en double.
Cette stratégie met en œuvre un système de suivi des tendances robuste grâce à de multiples mécanismes de confirmation des tendances et à des paramètres flexibles. Sa nature adaptative et sa logique de signal claire le rendent adapté à divers cycles de négociation et environnements de marché. Grâce aux orientations d’optimisation recommandées, les performances de la stratégie peuvent être encore améliorées. Lorsqu’il est appliqué au trading réel, il est recommandé de combiner des mesures de gestion des risques et d’optimiser les paramètres en fonction des caractéristiques des produits de trading spécifiques.
/*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)