Esta estrategia es un sistema de trading de seguimiento de tendencias que combina el indicador Coral Trend con el canal Donchian. Al capturar con precisión el impulso del mercado y proporcionar múltiples confirmaciones de las rupturas de tendencia, filtra efectivamente las señales falsas en los mercados oscilantes y mejora la precisión de las operaciones. La estrategia emplea técnicas de promedio móvil adaptativo que pueden ajustar dinámicamente los parámetros para mantener un rendimiento estable en diferentes condiciones de mercado.
La lógica central se basa en el efecto sinérgico de dos indicadores principales: Indicador de tendencia de coral: Calcula un valor suavizado de (alto + bajo + cerrado) / 3 y lo compara con el precio de cierre actual para determinar la dirección de la tendencia. Canal de Donchian: Determina si el precio rompe los niveles clave calculando los precios más altos y más bajos dentro de un período definido por el usuario.
El sistema genera señales largas cuando ambos indicadores confirman una tendencia alcista (coralTrendVal == 1 y donchianTrendVal == 1), y señales cortas cuando ambos confirman una tendencia bajista (coralTrendVal == -1 y donchianTrendVal == -1).
Esta estrategia logra un sistema de seguimiento de tendencias robusto a través de múltiples mecanismos de confirmación de tendencias y configuraciones de parámetros flexibles. Sus características adaptativas y lógica de señal clara lo hacen adecuado para varios marcos de tiempo de negociación y entornos de mercado. A través de las direcciones de optimización sugeridas, hay espacio para una mayor mejora en el rendimiento de la estrategia.
/*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)