Estrategia de salida del Canal de Donchian

El autor:¿ Qué pasa?, Fecha: 2024-01-29 11:51:08
Las etiquetas:

img

Resumen general

La estrategia de ruptura del canal Donchian es una estrategia de seguimiento de tendencias. Forma un canal de precios calculando los precios más altos y más bajos durante un cierto período de tiempo y utiliza los límites del canal como señales de compra y venta.

Estrategia lógica

Esta estrategia utiliza el indicador del canal de Donchian para determinar las tendencias de precios y calcular los puntos de entrada y salida. El canal de Donchian consiste en un tren superior, un tren inferior y un tren medio.

Los períodos de entrada y salida se pueden configurar de forma independiente. Cuando el precio rompe el carril inferior hacia arriba, va largo. Cuando el precio rompe el carril superior hacia abajo, va corto. El punto de salida es cuando el precio toca el carril correspondiente nuevamente. El carril medio también se puede usar como una línea de stop loss.

Además, la estrategia también establece un punto de toma de ganancias. El precio de toma de ganancias para las posiciones largas es el precio de entrada multiplicado por (1 + porcentaje de toma de ganancias), y viceversa para las posiciones cortas.

En resumen, al juzgar la tendencia, esta estrategia asegura suficiente espacio para establecer paradas y obtener ganancias.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. Lógica de señal clara y generación de señal simple y confiable.
  2. El indicador del canal de Donchian es insensible a las fluctuaciones de precios, lo que ayuda a captar la tendencia.
  3. Parámetros de canal personalizables para adaptarse a diferentes activos y plazos.
  4. Las funciones de stop loss/take profit integradas controlan el riesgo de manera efectiva.
  5. Alto potencial de ganancia para activos volátiles como las criptomonedas.

Análisis de riesgos

Los riesgos de esta estrategia incluyen:

  1. Incapaz de evitar completamente los riesgos de las grandes oscilaciones de precios a pesar de la parada de pérdida.
  2. La configuración incorrecta de los parámetros puede conducir a un exceso de negociación, aumentando los costes.
  3. Insensible a las fluctuaciones de precios, puede perder algunas oportunidades comerciales.

Para mitigar los riesgos anteriores:

  1. Para controlar el riesgo global, dimensionar adecuadamente las posiciones y diversificar los activos.
  2. Optimice los parámetros para encontrar la mejor combinación, posiblemente utilizando el aprendizaje automático.
  3. Incorporar indicadores adicionales para determinar la fiabilidad de la señal.

Direcciones de optimización

Esta estrategia puede optimizarse aún más en las siguientes dimensiones:

  1. Prueba y optimiza más combinaciones de parámetros para encontrar los valores óptimos.
  2. Incorporar modelos de aprendizaje automático para identificar automáticamente los parámetros óptimos, por ejemplo mediante el aprendizaje por refuerzo.
  3. Combine otros indicadores como las medias móviles y el volumen para determinar la tendencia y la confiabilidad de la señal.
  4. Desarrollar estrategias de stop loss más avanzadas, por ejemplo, trailing stop loss, Chandelier Exit, etc., para controlar mejor los riesgos.
  5. Ampliar la estrategia a través de más clases de activos para encontrar el mejor ajuste.

Conclusión

En conclusión, la estrategia de ruptura del canal Donchian proporciona señales claras y riesgos controlables para el comercio de tendencias. Es especialmente adecuado para activos volátiles como las criptomonedas con un gran potencial de ganancia. También hay posibilidades de optimizar aún más los parámetros e incorporar otros indicadores, que son vías para mejoras futuras.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © algotradingcc
// Strategy testing and optimisation for free trading bot 

//@version=4
strategy("Donchian Channel Strategy [for free bot]", overlay=true )

//Long optopns
buyPeriodEnter = input(10, "Channel Period for Long enter position")
buyPeriodExit = input(10, "Channel Period for Long exit position")
isMiddleBuy = input(true, "Is exit on Base Line? If 'no' - exit on bottom line")
takeProfitBuy = input(2.5, "Take Profit (%) for Long position")
isBuy = input(true, "Allow Long?")

//Short Options
sellPeriodEnter = input(20, "Channel Period for Short enter position")
sellPeriodExit = input(20, "Channel Period for Short exit position")
isMiddleSell = input(true, "Is exit on Base Line? If 'no' - exit on upper line")
takeProfitSell = input(2.5, "Take Profit (%) for Short position")
isSell = input(true, "Allow Short?")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriodEnter)
BuyExit = isMiddleBuy ? ((highest(buyPeriodExit) + lowest(buyPeriodExit)) / 2): lowest(buyPeriodExit)

SellEnter = lowest(sellPeriodEnter)
SellExit = isMiddleSell ? ((highest(sellPeriodExit) + lowest(sellPeriodExit)) / 2): highest(sellPeriodExit)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits
TakeProfitBuy = 0.0
TakeProfitSell = 0.0
if strategy.position_size > 0
    TakeProfitBuy := strategy.position_avg_price*(1 + takeProfitBuy/100)
    
if strategy.position_size < 0
    TakeProfitSell := strategy.position_avg_price*(1 - takeProfitSell/100)

// Long Position    
if isBuy and timeRange
    strategy.entry("Long", strategy.long, stop = BuyEnter, when = strategy.position_size == 0) 
    
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TakeProfitBuy, when = strategy.position_size > 0)

// Short Position
if isSell and timeRange
    strategy.entry("Short", strategy.short, stop = SellEnter, when = strategy.position_size == 0) 
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TakeProfitSell, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()


Más.