
A estratégia é um sistema de negociação de acompanhamento de tendências que combina o indicador Coral Trend com o Canal Donchian. Ao capturar com precisão o momento do mercado e múltiplas confirmações de rompimentos de tendências, sinais falsos no mercado volátil são efetivamente filtrados, melhorando a precisão das negociações. A estratégia utiliza tecnologia de média móvel adaptável, que pode ajustar dinamicamente os parâmetros de acordo com as condições de mercado, para que possa manter um desempenho estável em diferentes ambientes de mercado.
A lógica central da estratégia baseia-se na sinergia de dois indicadores principais:
Quando ambos os indicadores confirmam uma tendência ascendente (coralTrendVal == 1 e donchianTrendVal == 1), o sistema gera um sinal longo; quando ambos os indicadores confirmam uma tendência descendente (coralTrendVal == -1 e donchianTrendVal == -1), o sistema gera um sinal curto. A estratégia usa uma máquina de estado (trendState) para rastrear o estado da tendência atual e evitar sinais duplicados.
Esta estratégia implementa um sistema robusto de rastreamento de tendências por meio de múltiplos mecanismos de confirmação de tendências e configurações de parâmetros flexíveis. Sua natureza adaptável e lógica de sinal clara o tornam adequado para vários ciclos de negociação e ambientes de mercado. Por meio das direções de otimização recomendadas, o desempenho da estratégia pode ser melhorado ainda mais. Quando aplicado em negociações reais, é recomendável combinar medidas de gerenciamento de risco e otimizar parâmetros de acordo com as características de produtos de negociação 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)