Estrategia de salida del Canal de Donchian

El autor:¿ Qué pasa?, Fecha: 2023-09-19 21:47:41
Las etiquetas:

Resumen general

Esta estrategia utiliza el indicador del canal de Donchian para negociar las rupturas de las bandas superior e inferior, lo que permite seguir la tendencia de las operaciones en acciones/futures/criptomonedas/forex, etc., pertenecientes a las estrategias de ruptura de tendencia a medio y largo plazo.

Estrategia lógica

  1. Calcular el máximo máximo y el mínimo mínimo durante un período determinado (por ejemplo, 20 días) para obtener las bandas superior e inferior.

  2. La línea media es el promedio de las bandas superior e inferior.

  3. Cuando el precio cierra por encima de la banda superior, determinar la tendencia alcista ha comenzado, ir largo para entrar.

  4. Cuando el precio se rompe por debajo de la línea media, tomar el beneficio para salir.

  5. Puede hacer referencia al marco de tiempo de backtest para generar señales comerciales reales.

  6. Opcionalmente, romper la banda inferior también puede actuar como señal corta.

La estrategia determina el inicio de tendencia por las rupturas del canal, utiliza la línea media como salida de ganancia, capturando tendencias a medio y largo plazo.

Análisis de ventajas

  1. El canal de Donchian es simple de calcular e implementar.

  2. La ruptura del canal de precios indica un cambio de tendencia.

  3. La línea media como nivel de obtención de ganancias está razonablemente establecida.

  4. Reglas claras, fáciles de ejecutar.

  5. Puede ajustar flexiblemente los parámetros del canal para diferentes productos y plazos.

  6. Puede evaluar el rendimiento comercial a largo o corto plazo.

  7. Gran espacio de expansión, puede introducir otros indicadores técnicos.

Análisis de riesgos

  1. La ruptura del canal puede retrasarse, arriesgando oportunidades perdidas.

  2. No considera la divergencia antes del escape, puede generar señales falsas.

  3. Las pérdidas de parada fijas de la línea media sensibles a la volatilidad del mercado.

  4. El período de pruebas de retroceso incorrecto corre el riesgo de sobreajuste.

  5. Falta de stop loss, hay que tener cuidado con las pérdidas ampliadas.

Direcciones de optimización

  1. Prueba y optimiza los parámetros del período del canal.

  2. Las líneas de suspensión de pérdidas se evaluarán en función de los diferentes tipos de MA.

  3. Añadir filtros como indicadores de volumen.

  4. Añadir mecanismos de stop loss móviles o traseros.

  5. Introduzca el aprendizaje automático para predecir las rupturas de precios.

  6. Optimizar la gestión del dinero, establecer la proporción de ganancias, etc.

  7. Considere la posibilidad de combinar operaciones a largo/corto plazo o múltiples productos.

Resumen de las actividades

Esta estrategia utiliza el canal Donchian para determinar la dirección de la tendencia, las rupturas comerciales, un enfoque típico de tendencia a medio y largo plazo.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-15 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=10000)


testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=yellow, style=line, linewidth=1, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close >= dcUpper)
strategy.close("simpleBuy",when=close < dcAverage)
    
//strategy.entry("simpleSell", strategy.short,when=close <= dcLower)
//strategy.close("simpleSell",when=close > dcAverage)
    



Más.