
Esta estrategia se basa en la famosa estrategia de comercio de la playa, que utiliza el indicador de canal de Donchian para determinar la ruptura del precio y, en combinación con el indicador ATR, establece el punto de parada para el seguimiento de la tendencia. La ventaja de la estrategia es que tiene una fuerte capacidad de control de reversión, que puede controlar eficazmente el stop único y reducir la probabilidad de pérdidas continuas.
La estrategia se basa principalmente en dos indicadores: el canal Donchian y el ATR.
El canal Donchian se calcula a partir de los precios más altos y más bajos. La estrategia de configuración de canal por defecto es de 20 días de duración, para dibujar el canal de los precios más altos y más bajos en 20 días. Cuando el precio se rompe en la parte superior del canal, genera una señal de compra; cuando el precio se rompe en la parte inferior del canal, genera una señal de venta.
El indicador ATR se utiliza para medir la volatilidad del mercado y establecer un stop loss. El ciclo ATR predeterminado se establece en 20 días. La estrategia utiliza el doble del ATR como punto de stop loss.
La lógica de la transacción es la siguiente:
Cuando el precio se rompa por encima de la línea de entrada, hay que hacer una entrada adicional.
El punto de parada es el punto bajo de entrada menos el doble del ATR.
Cuando el precio se rompe en la parte inferior del canal, la posición de la parte superior se iguala.
Cuando el precio se rompa por debajo del canal, se abre la entrada.
El punto de parada es el punto más alto de la entrada más el doble del ATR.
Cuando el precio se rompe en la parte superior del canal, la posición de cabeza se vacía.
En resumen, la estrategia se basa en el canal Donchian para determinar la dirección de la tendencia y el momento de entrada, para controlar el riesgo con la configuración de stop loss en ATR y para realizar el seguimiento de la tendencia.
La estrategia tiene las siguientes ventajas:
La capacidad de control de la retirada es fuerte. El indicador ATR se utiliza para establecer el stop loss y puede controlar eficazmente las pérdidas individuales.
Se ha implementado el seguimiento de tendencias. El canal Donchian puede determinar con eficacia las rupturas de precios y indicar la conversión de tendencias.
El indicador ATR tiene en cuenta la volatilidad del mercado, y el stop loss se ajusta mejor a las características de las diferentes variedades.
La idea de la estrategia es simple, clara y fácil de entender.
Se puede escribir y optimizar con flexibilidad en Python.
La estrategia también tiene algunos riesgos que deben ser considerados:
Los parámetros del canal necesitan ser optimizados. En diferentes variedades y períodos de tiempo, los parámetros del canal necesitan ser ajustados para adaptarse a las características del mercado.
Riesgo de pérdidas continuas. En circunstancias anormales, puede desencadenar varias pérdidas en un corto período de tiempo, lo que genera grandes pérdidas.
Los parámetros de ATR necesitan ser probados. Los parámetros de ATR afectan directamente el efecto de deterioro, y necesitan ser ajustados según la variedad y el entorno de fluctuación.
La frecuencia de las operaciones puede ser demasiado alta. En mercados convulsivos donde la tendencia no es evidente, puede generarse demasiada señal de cruce.
Las ganancias pueden ser limitadas. Las estrategias de stop-loss son inadecuadas para capturar el aumento total de las tendencias.
En algunos casos excepcionales, el salto en el precio puede desencadenar directamente el cierre.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los parámetros de los canales para probar la adaptabilidad de los diferentes parámetros a las diferentes variedades.
Aumentar las condiciones de filtración para evitar la generación de demasiada señal en situaciones de crisis. Se puede considerar un filtro de brecha o volumen de transacción.
Optimizar los parámetros del ciclo ATR y probar el efecto de los diferentes parámetros en el efecto de deterioro.
Aumentar la estrategia de entrada en la pirámide, aumentar las posiciones en las tendencias y ampliar el espacio para obtener ganancias.
En combinación con otros indicadores, mejora el efecto de filtración. Indicadores como MACD, KD y otros para juzgar la tendencia y evitar el comercio inverso.
Optimización de los costos de transacción en función de los puntos de deslizamiento, comisiones, etc. Prevenir que el stop loss se acerque demasiado.
Prueba la adaptabilidad de las diferentes variedades y ajusta los parámetros para una variedad específica.
Esta estrategia es una versión introductoria de la ley de negociación de la playa. En general, la idea de la estrategia es simple y clara, y el control de retroceso es fuerte, lo que permite verificar eficazmente los principios de la ley de negociación de la playa. Sin embargo, la estrategia es de poca adaptabilidad a las variedades de negociación, y se necesitan parámetros específicos de optimización según las diferentes variedades para que la estrategia funcione.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Based on Turtle traders strategy: buy/sell on Donchian breakouts and stop loss on ATR 2x
// initial version considerations :
//// 1. Does not consider filter for avoiding new entries after winning trades (filtering rule from Turtle Strategy on 20 day breakout strategy)
//// 2. Does not consider pyramiding (aditional entries after 1N price movements)
strategy("Turtle trading strategy (Donchian/ATR)", overlay=true)
enter_period = input(20, minval=1, title="Enter Channel")
exit_period = input(10, minval=1, title="Exit Channel")
offset_bar = input(0,minval=0, title ="Offset Bars")
direction = input("Long",options=["Long","Short"],title="Direction")
max_length = max(enter_period,exit_period)
atrmult = input(2,title="ATR multiplier (Stop Loss)")
atrperiod = input(20,title="ATR Period")
closed_pos = false
dir_long = direction == "Long"? true : false
atr = atr(atrperiod)
upper = dir_long ? highest(enter_period): highest(exit_period)
lower = dir_long ? lowest(exit_period): lowest(enter_period)
atrupper = close + atr
atrlower = close - atr
plotted_atr = dir_long ? atrlower : atrupper
//basis = avg(upper, lower)
l = plot(lower, style=line, linewidth=3, color=lime, offset=1)
u = plot(upper, style=line, linewidth=3, color=lime, offset=1)
a = plot(plotted_atr, style=line,linewidth=2,color=red,offset=1)
//plot(basis, color=yellow, style=line, linewidth=1, title="Mid-Line Average")
//break upper Donchian (with 1 candle offset) (buy signal)
break_up = (close >= upper[1])
//break lower Donchian (with 1 candle offset) (sell signal)
break_down = (close <= lower[1])
stop_loss = dir_long ? (close<=plotted_atr[1]) : (close>=plotted_atr[1])
if break_up and dir_long
strategy.entry("buy", strategy.long, 1)
closed_pos :=false
if (break_down or stop_loss) and dir_long
strategy.close("buy")
if break_down and not dir_long
strategy.entry("sell", strategy.short, 1)
closed_pos :=false
if (break_up or stop_loss) and not dir_long
strategy.close("sell")
closed_pos :=true
losing_trade = strategy.equity[0]<strategy.equity[1]
//plotshape(losing_trade,text="Losing!")
plotshape(stop_loss,style=dir_long?shape.labeldown:shape.labelup,text="Stop!")
//plot(strategy.equity)