El nombre de esta estrategia es
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.
Las ventajas de esta estrategia son:
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;
La adición del filtro de la media móvil puede filtrar algunas señales falsas y evitar pérdidas;
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;
El riesgo está bien controlado con un mecanismo de stop loss para controlar pérdidas individuales.
Algunos riesgos de esta estrategia:
En el mercado de choque, puede haber más órdenes perdedoras pequeñas;
Cuando se produce una inversión de tendencia, el filtrado de las medias móviles aumentará los costes de apertura;
En mercados empinados, se puede perseguir el stop loss.
Contramedidas y soluciones:
Ajustar adecuadamente los parámetros, acortar el ciclo de Donchian, reducir el ciclo de promedio móvil para adaptarse a diferentes mercados.
Aumentar el juicio sobre la tendencia principal para evitar la construcción de posiciones en contra de la tendencia principal.
La estrategia se puede optimizar en los siguientes aspectos:
Aumentar la fuerza de la brecha. Por ejemplo, introducir volumen, posiciones abiertas sólo cuando el volumen aumenta;
Aumentar el juicio de las áreas calientes. Combinar con apoyo, presión, bandas, patrones, etc. para evitar las áreas calientes al abrir posiciones;
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.
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()