
La estrategia es un sistema comercial de seguimiento de tendencias que combina el indicador Coral Trend con el Canal Donchian. Al capturar con precisión el impulso del mercado y las múltiples confirmaciones de avances en las tendencias, se filtran de manera efectiva las señales falsas en el mercado volátil, lo que mejora la precisión de las operaciones. La estrategia utiliza tecnología de promedio móvil adaptativo, que puede ajustar dinámicamente los parámetros según las condiciones del mercado, de modo que pueda mantener un rendimiento estable en diferentes entornos de mercado.
La lógica central de la estrategia se basa en la sinergia de dos indicadores principales:
Cuando ambos indicadores confirman una tendencia alcista (coralTrendVal == 1 y donchianTrendVal == 1), el sistema genera una señal larga; cuando ambos indicadores confirman una tendencia bajista (coralTrendVal == -1 y donchianTrendVal == -1), el sistema genera una señal larga. Una señal corta. La estrategia utiliza una máquina de estados (trendState) para rastrear el estado de la tendencia actual y evitar señales duplicadas.
Esta estrategia implementa un sistema robusto de seguimiento de tendencias a través de múltiples mecanismos de confirmación de tendencias y configuraciones de parámetros flexibles. Su naturaleza adaptativa y su lógica de señal clara lo hacen adecuado para diversos ciclos comerciales y entornos de mercado. A través de las instrucciones de optimización recomendadas, se puede mejorar aún más el rendimiento de la estrategia. Cuando se aplica en el comercio real, se recomienda combinar medidas de gestión de riesgos y optimizar los parámetros de acuerdo con las características de los productos comerciales específicos.
/*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)