Estrategia de trading con divergencia y seguimiento de tendencias del indicador Donchian de múltiples períodos

DC MA Trend momentum volatility SIGNAL
Fecha de creación: 2025-02-21 10:38:06 Última modificación: 2025-02-21 10:38:06
Copiar: 0 Número de Visitas: 448
2
Seguir
319
Seguidores

Estrategia de trading con divergencia y seguimiento de tendencias del indicador Donchian de múltiples períodos Estrategia de trading con divergencia y seguimiento de tendencias del indicador Donchian de múltiples períodos

Descripción general

La estrategia se basa en el indicador de las vías de Dongxian de múltiples períodos para construir un sistema de seguimiento de tendencias. Al analizar las rupturas de las vías de Dongxian en diferentes períodos de tiempo, se combinan las tendencias principales y las tendencias locales para formar un gráfico de bandas de tendencia visualmente intuitivo. La estrategia utiliza cambios de color profundos para mostrar la fortaleza y la debilidad de las tendencias, las líneas verdes representan tendencias al alza y las líneas rojas representan tendencias a la baja.

Principio de estrategia

El núcleo de la estrategia es la determinación de tendencias basadas en los indicadores del Canal Donchian. El Canal Donchian se compone de canales de precios máximos y canales de precios mínimos, y se determina la tendencia mediante la comparación de la relación entre el precio actual y la posición del canal.

  1. Determinación de la tendencia principal: utilizando el canal de Dongguan de 20 ciclos, cuando los precios rompen la trayectoria ascendente forman una tendencia ascendente y rompen la trayectoria descendente forman una tendencia descendente
  2. Determinación de tendencias locales: en el marco de las tendencias principales, se utiliza el canal de Dongxian con periodos más cortos para determinar la dirección de las tendencias locales
  3. Gráfico de bandas de tendencia: las bandas de tendencia se forman a través de una combinación de 10 ciclos diferentes de canales de Dongxian, con colores oscuros que reflejan la intensidad de la tendencia
  4. Señales de negociación: la tendencia principal hacia arriba abre más órdenes, la tendencia principal hacia abajo abre órdenes en blanco, la tendencia se invierte y la posición está cerrada

Ventajas estratégicas

  1. Objetivo de juicio de tendencias: basado en tendencias de juicio de breakouts de precios, evitando los desvíos de juicio subjetivo
  2. Confirmación de múltiples ciclos: mejora la precisión de los juicios de tendencias mediante la superposición de tendencias de diferentes ciclos
  3. Intuitivos efectos visuales: cambios de color en las bandas de tendencia para mostrar el estado del mercado de forma intuitiva
  4. Reglas claras de negociación: las señales de entrada y salida son claras y fáciles de implementar programáticamente
  5. Adaptabilidad: Parámetros de optimización de la estrategia se pueden ajustar según las características de la variedad comercial

Riesgo estratégico

  1. Riesgo de reversión de la tendencia: puede haber una reversión mayor en el punto de inflexión de la tendencia
  2. No es válido para mercados convulsionados: los movimientos de oscilación horizontal pueden generar señales falsas.
  3. Sensibilidad de parámetros: los diferentes ajustes de parámetros pueden afectar significativamente la eficacia de la estrategia
  4. Efectos del punto de deslizamiento: las transacciones frecuentes pueden verse afectadas por el punto de deslizamiento
  5. Riesgo sistémico: las emergencias en el mercado pueden causar grandes pérdidas

Dirección de optimización de la estrategia

  1. Aumentar la filtración de la intensidad de la tendencia: introducir indicadores de intensidad de la tendencia como el ADX, filtrando las señales de tendencia débil
  2. Optimización de la configuración de stop loss: ajuste dinámico de la posición de stop loss basado en el ATR para mejorar la capacidad de control de riesgo
  3. Adición de confirmación de la transacción: análisis de la transacción combinado para verificar la efectividad de la tendencia
  4. Introducción de la adaptación de la volatilidad: Parámetros de ajuste dinámico en función de la volatilidad del mercado
  5. Mejora en la gestión de posiciones: ajuste dinámico del tamaño de las posiciones basado en la intensidad de la tendencia

Resumir

La estrategia utiliza la aplicación innovadora de múltiples ciclos de la vía de Dongxian, para construir un sistema de seguimiento de tendencias con un efecto visual destacado y una lógica clara. La estrategia tiene como principal ventaja la visualización del complejo proceso de análisis de tendencias, lo que facilita a los comerciantes la comprensión intuitiva de los movimientos del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2024-06-12 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Donchian Trend Ribbon Strategy", shorttitle="DonchianTrendRibbonStrat", overlay=true, precision=0)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Parameters
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dlen = input.int(defval=20, title="Donchian Channel Period", minval=10)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Helper function to determine color
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
f_color(mainTrend, localTrend) =>
    // mainTrend = 1 => uptrend, -1 => downtrend
    // localTrend = 1 => local uptrend, -1 => local downtrend
    // Return color based on whether local trend aligns with the main trend
    color c = na
    if mainTrend == 1
        c := localTrend == 1 ? color.new(color.lime, 0) : color.new(color.lime, 60)
    else if mainTrend == -1
        c := localTrend == -1 ? color.new(color.red, 0) : color.new(color.red, 60)
    else
        c := na
    c

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Function dchannel - determines main trend (1 or -1)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dchannel(len) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)
    var int tr = 0
    tr := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(tr[1])

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Function dchannelalt - determines local trend and returns color
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dchannelalt(len, maintrend) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)
    var int tr = 0
    tr := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(tr[1])
    f_color(maintrend, tr)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Calculate main trend
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
maintrend = dchannel(dlen)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Plotting the Donchian Trend Ribbon
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
plot( 5,  color=dchannelalt(dlen - 0, maintrend),  style=plot.style_columns, histbase= 0)
plot(10, color=dchannelalt(dlen - 1, maintrend),   style=plot.style_columns, histbase= 5)
plot(15, color=dchannelalt(dlen - 2, maintrend),   style=plot.style_columns, histbase=10)
plot(20, color=dchannelalt(dlen - 3, maintrend),   style=plot.style_columns, histbase=15)
plot(25, color=dchannelalt(dlen - 4, maintrend),   style=plot.style_columns, histbase=20)
plot(30, color=dchannelalt(dlen - 5, maintrend),   style=plot.style_columns, histbase=25)
plot(35, color=dchannelalt(dlen - 6, maintrend),   style=plot.style_columns, histbase=30)
plot(40, color=dchannelalt(dlen - 7, maintrend),   style=plot.style_columns, histbase=35)
plot(45, color=dchannelalt(dlen - 8, maintrend),   style=plot.style_columns, histbase=40)
plot(50, color=dchannelalt(dlen - 9, maintrend),   style=plot.style_columns, histbase=45)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Trading Logic (STRATEGY)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool goLong  = (maintrend == 1)
bool goShort = (maintrend == -1)

// Entry signals
if goLong
    strategy.entry("Long", strategy.long)

if goShort
    strategy.entry("Short", strategy.short)

// Close positions when trend changes
if strategy.position_size > 0 and goShort
    strategy.close("Long")

if strategy.position_size < 0 and goLong
    strategy.close("Short")