
Esta estrategia se llama estrategia de comercio de la tortuga basada en el canal de Donchian. Esta estrategia se basa en las ideas principales de la famosa filosofía de comercio de la tortuga, que utiliza el canal de Donchian para juzgar las tendencias del mercado y filtrarlas en combinación con las medias móviles, lo que permite una estrategia de seguimiento de tendencias más simple.
El principal indicador de juicio de la estrategia es el canal Donchian. El canal Donchian se compone de un rango de fluctuaciones de N días de precios máximos y mínimos, si el precio rompe la vía ascendente, es una señal larga; si rompe la vía descendente, es una señal corta.
Además, la estrategia también introduce dos medias móviles (la línea de 50 días y la línea de 125 días) para filtrar las señales. Se realizan operaciones con más cabezales solo cuando la media móvil rápida atraviesa la media móvil lenta por encima de la media móvil rápida; se realizan operaciones sin cabezales cuando la media móvil rápida atraviesa la media móvil lenta por debajo de la media móvil rápida. Esto puede filtrar eficazmente algunas señales falsas.
Las condiciones de apertura de esta estrategia son: el precio se eleva a través del canal Donchian, y el promedio móvil rápido se eleva a través del promedio móvil lento, para satisfacer estas dos condiciones; el precio baja a través del canal Donchian, y el promedio móvil rápido se eleva a través del promedio móvil lento, y se abre una posición en blanco. La condición de posición baja es para que el precio toque el límite del canal Donchian lento en la dirección opuesta.
La estrategia tiene las siguientes ventajas:
El uso del canal de Donchian para determinar la dirección de la tendencia, con un mejor efecto de retroalimentación y con éxito en la captura de las grandes tendencias;
Se ha añadido un filtro a las medias móviles, que puede filtrar algunas señales falsas y evitar pérdidas.
La combinación de canales Donchian lentos y promedios móviles lentos permite equilibrar la frecuencia de las operaciones y la precisión de los paros.
El riesgo está controlado, y hay un mecanismo de stop loss para controlar las pérdidas individuales.
La estrategia también tiene sus riesgos:
En un momento de crisis, es posible que se produzca un mayor número de unidades con menores pérdidas.
El filtro de las medias móviles aumenta el costo de la construcción de un almacén cuando la tendencia cambia.
En el caso de las operaciones de venta, es posible que se produzca una suspensión de pérdidas.
La respuesta y la solución:
Se pueden ajustar los parámetros adecuadamente para acortar los ciclos Donchianos y reducir los ciclos de las medias móviles para adaptarse a los diferentes mercados.
Aumentar el conocimiento de las tendencias generales y evitar posicionarse en contra de ellas.
La estrategia puede ser optimizada en los siguientes aspectos:
Aumentar el juicio sobre la intensidad de la ruptura. Por ejemplo, la introducción de volúmenes de transacción, que sólo se abren en caso de que el volumen de transacciones se amplíe;
Incrementar el juicio de las zonas calientes. En combinación con los niveles de presión de soporte, bandas de onda y patrones para juzgar las zonas calientes de precios, evitar la construcción de almacenes en las zonas calientes;
Optimización de las estrategias de detención de pérdidas. Se puede introducir el seguimiento de las pérdidas, la pérdida de amplitud, la pérdida de tiempo, etc., para que la detención sea más inteligente.
En general, esta estrategia es una estrategia de seguimiento de tendencias muy típica y sencilla. La dirección de la determinación del canal Donchian, el filtro de la señal de la media móvil, logran un mejor efecto de retroalimentación. La estrategia es adecuada para los inversores que siguen las grandes tendencias, el control del riesgo está en su lugar, es fácil de operar en el campo.
/*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()