Canal de Donchian con estrategia de pérdida de tracción

El autor:¿ Qué pasa?, Fecha: 2023-12-07 16:53:10
Las etiquetas:

img

Resumen general

Se trata de una estrategia de seguimiento de tendencias basada en el indicador del canal de Donchian, combinada con un stop loss dinámico basado en el indicador ATR para obtener ganancias. Pertenece a la categoría de estrategia de seguimiento de tendencias.

Estrategia lógica

La estrategia utiliza un canal de Donchian de 20 períodos, donde la línea media del canal es el promedio del más alto y el más bajo mínimo. Va largo cuando el precio cruza por encima de la línea media del canal y va corto cuando el precio cruza por debajo de la línea media. La regla de salida es cuando el precio toca la línea de stop loss dinámica, que se calcula como el mínimo de las 3 barras recientes menos un tercio del valor ATR para posiciones largas, y el máximo de las 3 barras recientes más un tercio del valor ATR para posiciones cortas.

Análisis de ventajas

Las principales ventajas de esta estrategia son las siguientes:

  1. El canal Donchian es eficaz para identificar las tendencias del mercado y detectar tendencias.
  2. El stop loss dinámico basado en el ATR bloquea las ganancias controlando los riesgos.
  3. La inclusión del factor ATR en el cálculo del stop loss tiene en cuenta la volatilidad del mercado, lo que hace que el stop sea más razonable.
  4. El método de cálculo del stop loss es estable y confiable, evitando que las paradas estén demasiado cerca y se detengan prematuramente.

Análisis de riesgos

Los principales riesgos de esta estrategia incluyen:

  1. El canal de Donchian tiene cierto efecto de retraso, que puede perder oportunidades a corto plazo.
  2. La configuración incorrecta de los parámetros ATR puede llevar a que la pérdida de parada sea demasiado amplia o demasiado cercana.
  3. El mecanismo de determinación de tendencias es relativamente simple, lo que puede generar más señales falsas durante las consolidaciones de mercado.
  4. Falta de un juicio efectivo de soporte/resistencia, lo que resulta en un momento inadecuado de entrada en el mercado.

Direcciones de optimización

Algunas direcciones de optimización para esta estrategia:

  1. Añadir otros indicadores para evitar el comercio frecuente cuando no hay una tendencia clara.
  2. Agregue el juicio de soporte/resistencia para optimizar el tiempo de entrada.
  3. Prueba otros métodos dinámicos de cálculo de pérdidas de parada para optimizar aún más la estrategia de pérdidas de parada.
  4. Prueba de los efectos de los diferentes parámetros del período del Canal de Donchian en el rendimiento de la estrategia.
  5. Añadir filtros en el volumen o incrementos para reducir las señales falsas.

Conclusión

En resumen, esta es una estrategia de seguimiento de tendencias simple y práctica. Identifica la dirección de la tendencia a través del canal Donchian y bloquea las ganancias con un stop loss dinámico, que puede seguir efectivamente las tendencias.


/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "dc",  overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)

testStartYear = input(2017, "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)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


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

dcPeriod = input(20, "Period")

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


useTakeProfit   = na
useStopLoss     = na
useTrailStop    = na
useTrailOffset  = na
//@version=1
Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")

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

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

strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when= ( close< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=( close > Sell_stop))
    
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)



Más.