La estrategia de ruptura de canal doble de Donchian es una estrategia de ruptura basada en los canales de Donchian. Utiliza canales de Donchian rápidos y lentos para construir señales comerciales largas y cortas. Cuando el precio atraviesa el canal lento, abra posiciones largas o cortas. Cuando el precio atraviesa el canal rápido, cierre posiciones.
La estrategia de ruptura del canal doble de Donchian se basa en dos parámetros:Período del canal Donchiano lentoyPeríodo del canal de Donchian rápidoLa estrategia calcula primero las bandas superior e inferior de los dos canales de Donchian.
La señal de entrada larga es unaruptura por encima de la banda superiorconvolatilidad superior al umbralLa señal de entrada corta es unadesglose por debajo de la banda inferiorconvolatilidad superior al umbral.
La señal de salida de stop-loss largo es undesglose por debajo de la banda inferiorLa señal de salida de stop-loss corto es unaruptura por encima de la banda superior.
La estrategia también estableceobtener beneficiosEl índice de ganancia por defecto es de 2%, es decir, la mitad de la posición de ganancia cuando el movimiento del precio alcanza el 2%.
La estrategia de ruptura de doble canal de Donchian tiene las siguientes ventajas:
El diseño de doble canal puede capturar señales de tendencia de marcos de tiempo más largos y más cortos, lo que permite entradas más precisas.
La condición de volatilidad evita que las operaciones se realicen con frecuencia en mercados de rango.
Las configuraciones integrales de toma de ganancias y stop loss bloquean ganancias parciales y reducen las pérdidas.
Una lógica estratégica simple y clara, fácil de entender e implementar.
Los parámetros personalizables se adaptan a diferentes productos y preferencias comerciales.
La estrategia de ruptura del canal doble de Donchian también tiene algunos riesgos:
El diseño de doble canal es sensible y puede generar señales falsas.
En mercados volátiles, el stop loss puede activarse con demasiada frecuencia.
El porcentaje fijo de ganancias no maximiza las ganancias. Considere la intervención dinámica o manual para un precio óptimo de ganancias.
El rendimiento real de la negociación puede diferir de las expectativas de las pruebas de retroceso. Requiere una validación exhaustiva y ajustes de parámetros si es necesario.
La estrategia de ruptura del canal dual de Donchian puede optimizarse en varios aspectos:
Prueba más combinaciones de períodos para encontrar parámetros óptimos.
Prueba diferentes medidas de volatilidad como ATR para encontrar la métrica más estable.
Establezca un límite en el número de entradas para evitar pérdidas al final de las tendencias.
Prueba dinámico obtener ganancias para obtener un mayor beneficio de comercio único.
Incorporar otros indicadores para filtrar las entradas y mejorar la precisión, por ejemplo, el volumen.
Optimizar los modelos de gestión de dinero como el tamaño de la posición fraccionaria fija para un mejor control del riesgo.
En conclusión, la Estrategia de Breakout de Canal Dual Donchian es una excelente estrategia de seguimiento de tendencias. Combina tanto la identificación de tendencias como las capacidades de protección contra la reversión. Con la optimización de parámetros y el refinamiento de reglas, puede ser rentable en la mayoría de los productos y condiciones de mercado. La estrategia es simple y práctica, vale la pena aprender y aplicar para los operadores cuantitativos.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © omererkan //@version=5 strategy(title="Double Donchian Channel Breakout", overlay=true, initial_capital = 1000, commission_value = 0.05, default_qty_value = 100, default_qty_type = strategy.percent_of_equity) // Donchian Channels slowLen = input.int(50, title="Slow Donchian", group = "Conditions") fastLen = input.int(30, title="Fast Donchian", group = "Conditions") // Volatility Calculated as a percentage volatility = input.int(3, title="Volatility (%)", group = "Conditions") // Long positions long = input.bool(true, "Long Position On/Off", group = "Strategy") longProfitPerc = input.float(2, title="Long TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // Short positions short = input.bool(true, "Short Position On/Off", group = "Strategy") shortProfitPerc = input.float(2, title="Short TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // First take profit point for positions TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)", group = "Strategy") // Slow Donchian Calculated ubSlow = ta.highest(high, slowLen)[1] lbSlow = ta.lowest(low, slowLen)[1] // Fast Donchian Calculated ubFast = ta.highest(high, fastLen)[1] lbFast = ta.lowest(low, fastLen)[1] // Plot Donchian Channel for entries plot(ubSlow, color=color.green, linewidth=2, title="Slow DoCh - Upperband") plot(lbSlow, color=color.green, linewidth=2, title="Slow DoCh - Lowerband") plot(ubFast, color=color.blue, linewidth=2, title="Fast DoCh - Upperband") plot(lbFast, color=color.blue, linewidth=2, title="Fast DoCh - Lowerband") // This calculation, the strategy does not open position in the horizontal market. fark = (ubSlow - lbSlow) / lbSlow * 100 // Take profit levels longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Code long trading conditions longCondition = ta.crossover(close, ubSlow) and fark > volatility if longCondition and long == true strategy.entry("Long", strategy.long) // Code short trading conditions shortCondition = ta.crossunder(close, lbSlow) and fark > volatility if shortCondition and short == true strategy.entry("Short", strategy.short) // Determine long trading conditions if strategy.position_size > 0 and ta.crossunder(close, lbFast) strategy.close_all("Close All") // Determine short trading conditions if strategy.position_size < 0 and ta.crossover(close, ubFast) strategy.close_all("Close All") // Take Profit Long if strategy.position_size > 0 strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice) // Take Profit Short if strategy.position_size < 0 strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)