Esta estratégia é um sistema de negociação que combina o indicador Coral Trend com o canal Donchian. Ao capturar com precisão o ímpeto do mercado e fornecer várias confirmações de rupturas de tendência, ele efetivamente filtra sinais falsos em mercados oscilantes e melhora a precisão da negociação.
A lógica central baseia-se no efeito sinérgico de dois indicadores principais: Indicador de tendência de corais: Calcula um valor suavizado de (alto + baixo + fechamento) / 3 e o compara com o preço de fechamento atual para determinar a direção da tendência. 2. Canal de Donchian: Determina se o preço quebra os níveis-chave, calculando os preços mais altos e mais baixos dentro de um período definido pelo usuário.
O sistema gera sinais longos quando ambos os indicadores confirmam uma tendência de alta (coralTrendVal == 1 e donchianTrendVal == 1), e sinais curtos quando ambos confirmam uma tendência de queda (coralTrendVal == -1 e donchianTrendVal == -1).
Esta estratégia atinge um sistema robusto de tendência seguindo através de múltiplos mecanismos de confirmação de tendência e configurações de parâmetros flexíveis. Suas características adaptativas e lógica de sinal clara tornam-na adequada para vários prazos de negociação e ambientes de mercado. Através das direções de otimização sugeridas, há espaço para melhoria adicional no desempenho da estratégia. Ao aplicar para negociação ao vivo, recomenda-se incorporar medidas de gerenciamento de risco e otimizar parâmetros de acordo com as características de instrumentos comerciais 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)