La estrategia de ruptura de canal adaptativa es una estrategia de seguimiento de tendencias que rastrea los canales de precios del mercado.
La ventaja de esta estrategia es que puede adaptarse automáticamente a los cambios del mercado al expandir los canales para filtrar el ruido y producir señales comerciales cuando una tendencia es clara. Sin embargo, también hay riesgos de perseguir precios altos y matar precios bajos.
Esta estrategia se basa en la teoría de la ruptura del canal, que calcula dos conjuntos de precios más altos y más bajos en diferentes períodos (longitud de entrada y longitud de salida) para formar canales.
Específicamente, la estrategia primero calcula el precio más alto de 20 períodos (sup) y el precio más bajo (inferior) para formar el canal de precios. Luego calcula el precio más alto de 10 períodos (sup) y el precio más bajo (descenso). Después de que se activa una señal de compra (descenso de precios por encima del carril superior), el precio más bajo de 10 períodos (descenso) se usa como línea de stop loss. Después de que se activa una señal de venta (descenso de precios por debajo del carril inferior), el precio más alto de 10 períodos (sup) se utiliza como línea de ganancia. Esto forma un sistema de canal adaptativo.
Cuando los precios rompen el canal, indica que se está formando una tendencia. La estrategia emitirá entonces señales comerciales. Al mismo tiempo, las líneas de toma de ganancias y stop loss también se ajustarán con los cambios de precios para bloquear las ganancias y evitar las pérdidas.
Los principales riesgos de esta estrategia incluyen:
Las posibles optimizaciones de esta estrategia incluyen:
La estrategia de ruptura del canal adaptativo tiene una lógica clara y una sólida viabilidad en general. Puede rastrear automáticamente los cambios del mercado y generar señales comerciales cuando se forman tendencias. Los mecanismos de doble canal y stop loss / take profit también ayudan a controlar los riesgos.
/*backtest start: 2024-01-29 00:00:00 end: 2024-02-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Turtle Trade Channels Strategy", shorttitle="TTCS", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) length = input(20,"Entry Length", minval=1) len2=input(10, "Exit Length", minval=1) lower = lowest(length) upper = highest(length) up=highest(high,length) down=lowest(low,length) sup=highest(high,len2) sdown=lowest(low,len2) K1=barssince(high>=up[1])<=barssince(low<=down[1]) ? down : up K2=iff(barssince(high>=up[1])<=barssince(low<=down[1]),sdown,sup) K3=iff(close>K1,down,na) K4=iff(close<K1,up,na) buySignal=high==upper[1] or crossover(high,upper[1]) sellSignal = low==lower[1] or crossover(lower[1],low) buyExit=low==sdown[1] or crossover(sdown[1],low) sellExit = high==sup[1] or crossover(high,sup[1]) strategy.entry("Buy", strategy.long, when = buySignal and barssince(buySignal) < barssince(sellSignal[1])) strategy.entry("Sell", strategy.short, when = sellSignal and barssince(sellSignal) < barssince(buySignal[1])) strategy.exit("Buy Exit", from_entry = "Buy", when = buyExit and barssince(buyExit) < barssince(sellExit[1])) strategy.exit("Sell Exit", from_entry = "Sell", when = sellExit and barssince(sellExit) < barssince(buyExit[1])) plot(K1, title="Trend Line", color=color.red, linewidth=2) e=plot(K2, title="Exit Line", color=color.blue, linewidth=1, style=6)