Estrategia de comercio de tortugas basada en los canales de Donchian

El autor:¿ Qué pasa?, Fecha: 2023-12-25 10:57:52
Las etiquetas:

img

Resumen general

El nombre de esta estrategia es Turtle Trading Strategy Based on Donchian Channels. toma prestada la idea principal de las famosas Turtle Trading Rules y utiliza los canales de Donchian para determinar las tendencias del mercado, combinadas con promedios móviles para la filtración, realizando una estrategia de seguimiento de tendencias relativamente simple.

Principio de la estrategia

El principal indicador para juzgar esta estrategia es el canal de Donchian. El canal de Donchian consiste en el rango fluctuante de los precios más altos y más bajos en el período de N días. Si el precio rompe el carril superior del canal, será una señal larga; si rompe el carril inferior del canal, será una señal corta. Esta estrategia utiliza el canal de Donchian rápido (10 días) para emitir señales y el canal de Donchian lento (20 días) para detener la pérdida.

Además, esta estrategia también introduce dos líneas de promedio móvil (línea de 50 días y línea de 125 días) para filtrar las señales. Solo cuando la línea de promedio móvil rápido cruce por encima de la línea de promedio móvil lento, se negociarán posiciones largas; solo cuando la línea de promedio móvil rápido cruce por debajo de la línea de promedio móvil lento, se negociarán posiciones cortas. Esto puede filtrar efectivamente algunas señales falsas.

Las condiciones de apertura de esta estrategia son: el precio atraviesa el carril superior del Canal de Donchian, y la línea media móvil rápida cruza por encima de la línea media móvil lenta. Cuando se cumplen ambas condiciones, se abrirán posiciones largas; el precio atraviesa el carril inferior del Canal de Donchian, y la línea media móvil rápida cruza por debajo de la línea media móvil lenta, luego abre posiciones cortas. Las condiciones de cierre son cuando el precio toca los límites opuestos del Canal de Donchian lento.

Análisis de ventajas

Las ventajas de esta estrategia son:

  1. Utilizando el canal de Donchian para determinar la dirección de la tendencia, el efecto de backtest es mejor para capturar con éxito la gran tendencia;

  2. La adición del filtro de la media móvil puede filtrar algunas señales falsas y evitar pérdidas;

  3. La combinación de canales Donchain rápidos y lentos y promedios móviles puede equilibrar la frecuencia de negociación y la precisión de stop loss;

  4. El riesgo está bien controlado con un mecanismo de stop loss para controlar pérdidas individuales.

Análisis de riesgos

Algunos riesgos de esta estrategia:

  1. En el mercado de choque, puede haber más órdenes perdedoras pequeñas;

  2. Cuando se produce una inversión de tendencia, el filtrado de las medias móviles aumentará los costes de apertura;

  3. En mercados empinados, se puede perseguir el stop loss.

Contramedidas y soluciones:

  1. Ajustar adecuadamente los parámetros, acortar el ciclo de Donchian, reducir el ciclo de promedio móvil para adaptarse a diferentes mercados.

  2. Aumentar el juicio sobre la tendencia principal para evitar la construcción de posiciones en contra de la tendencia principal.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Aumentar la fuerza de la brecha. Por ejemplo, introducir volumen, posiciones abiertas sólo cuando el volumen aumenta;

  2. Aumentar el juicio de las áreas calientes. Combinar con apoyo, presión, bandas, patrones, etc. para evitar las áreas calientes al abrir posiciones;

  3. Optimice las estrategias de stop loss. Introduzca el seguimiento de stop loss, volatilidad stop loss, tiempo stop loss, etc. para hacer que el stop loss sea más inteligente.

Resumen de las actividades

En general, esta estrategia es una estrategia de seguimiento de tendencias muy típica y simple. Se dan buenos resultados de backtest determinando la dirección a través del canal Donchian y filtrando señales a través de promedios móviles. Esta estrategia es adecuada para los inversores que persiguen grandes tendencias, con buen control de riesgos y fácil de implementar en el comercio real. Al optimizar algunos parámetros y reglas, la tasa de ganancia y la rentabilidad pueden mejorarse aún más.


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

//@version=2
// Coded by Vladkos
strategy("Donchian strategy with filter", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 4,pyramiding=5)

fromyear = input(2017, defval = 2018, minval = 1800, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(21, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
ATR=input(20,minval=1)
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
needstoploss= input(true,defval=true,title="Stop LOSS")
///////////ATR
tra=atr(ATR)


////////////Переменные
Donchian_slow=input(20,minval=1)
Donchian_fast=input(10,minval=1)
Slow_EMA=input(125,minval=1)
Fast_EMA=input(50,minval=1)

/////////// Медленный Дончан
lower = lowest(Donchian_slow)
upper = highest(Donchian_slow)
basis = avg(upper, lower)
plot(lower,color=blue)
plot(upper,color=blue)

/////////// быстрый Дончан
lowerF = lowest(Donchian_fast)
upperF = highest(Donchian_fast)
basisF = avg(upperF, lowerF)
plot(lowerF,color=red)
plot(upperF,color=red)

////////// Скользящие средние
ema_S=ema(close,Slow_EMA)
ema_F=ema(close,Fast_EMA)
plot(ema_S,color=red)
plot(ema_F,color=green)

///////// Условия сделок
long_condition= close>=upper[1] and ema_F>ema_S  
long_exit= close<lowerF[1]

short_condition=close<=lower[1] and ema_F<ema_S
short_exit=close>upperF[1]

////////// Отправка ордеров
strategy.entry("Long",strategy.long,when=long_condition and term and needlong==true)
strategy.exit("stop loss","Long",stop=strategy.position_avg_price-(tra*2),when= (needstoploss==true))
strategy.close("Long",when=long_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))
    
strategy.entry("Short",strategy.short,when=short_condition and term and (needshort==true))
strategy.exit("stoploss","Short",stop=strategy.position_avg_price+(tra*2),when= (needstoploss==true))
strategy.close("Short",when=short_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()






Más.