
La estrategia se llama “trend tracking strategy” y se basa en los indicadores ADX y MACD. Utiliza el indicador de tendencia promedio ((ADX) para determinar la dirección y la intensidad de la tendencia y, en combinación con la señal de multi-border del indicador de agregación de media móvil ((MACD) para realizar operaciones de seguimiento de tendencia. La estrategia establece posiciones de multi-border o de multi-border cuando el ADX indica la existencia de una fuerte tendencia y el MACD emite una señal de operación.
La estrategia determina la dirección y la intensidad de la tendencia del mercado mediante el cálculo de la curva ADX y +DI, -DI. Cuando la curva +DI atraviesa la curva -DI, es un mercado de más cabeza, y cuando la curva -DI atraviesa la curva +DI, es un mercado de cabeza hueca. Esto no es suficiente, cuando el valor de ADX es mayor a 20, indica que la tendencia es lo suficientemente fuerte, y luego combina el diferencial del indicador MACD (mac) y el valor de la señal (signalline) para comprar y vender la variedad, lo que permite realizar operaciones de seguimiento de tendencias.
En concreto, la lógica de las señales de negociación de la estrategia es:
Señales múltiples: cuando la línea de diferencia de +DI> -DI y MACD cruza la línea de señal de abajo hacia arriba Señales de cabecera: cuando -DI> +DI y la línea de diferencia del MACD cruza la línea de señal de arriba a abajo
De acuerdo con esta lógica, la estrategia es capaz de capturar el momento de entrada más favorable en una tendencia fuerte.
La mayor ventaja de esta estrategia es que tiene en cuenta a la vez la determinación de tendencias y la elección del momento de entrada, lo que permite a los comerciantes encontrar mejores puntos de entrada cuando hay una fuerte orientación en el mercado, lo que mejora considerablemente la estabilidad y la rentabilidad del sistema.
Además, la estrategia también introduce una lógica de stop loss. Cuando la pérdida de posición supera el precio de stop loss definido por el usuario, la estrategia se detiene activamente, controlando efectivamente la pérdida de las operaciones individuales.
A pesar de las ventajas de esta estrategia, hay algunos riesgos de los que hay que estar alerta:
Las señales de negociación que componen el ADX y el MACD, que pueden fallar o generar señales erróneas en ciertas condiciones del mercado, lo que puede conducir a pérdidas innecesarias;
El precio de parada definido por el usuario puede ser superado, causando pérdidas superiores a las esperadas;
En un mercado inverso, las estrategias pueden generar demasiadas transacciones no válidas y costosas.
Para reducir estos riesgos, se recomienda optimizar la configuración de los parámetros de ADX y MACD, y aplicar estrategias estrictas de gestión de fondos, al tiempo que se ajusta la lógica de stop loss para adaptarse a las diferentes condiciones del mercado.
La estrategia también tiene cierto margen de mejora:
Se pueden introducir más indicadores para generar señales de negociación más fuertes, por ejemplo, limitando las operaciones en combinación con indicadores de volatilidad.
Los parámetros de ADX y MACD se pueden optimizar automáticamente a través de métodos de aprendizaje automático.
Se puede crear un mecanismo de suspensión de pérdidas adaptativo para que el precio de suspensión siga la dinámica de las fluctuaciones del mercado.
A través de estos métodos, se espera mejorar aún más la estabilidad y la rentabilidad de la estrategia.
En general, una estrategia de seguimiento de tendencias basada en los indicadores ADX y MACD, con ventajas como determinar la dirección de la tendencia, encontrar el mejor momento de entrada y configurar la lógica de stop loss, es un sistema de negociación que vale la pena considerar. Si los parámetros se optimizan y el control del riesgo está en su lugar, la estrategia puede obtener un buen retorno de la inversión.
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("TUE ADX/MACD Confluence V1.0", overlay=true)
showsignals = input(true, title="Show BUY/SELL Signals")
showcandlecolors = input(true, title="Show Candle Colors")
length = input(14, title="ADX Length")
smoothing = input(10, title="ADX Smoothing")
macdsource = input(close, title="MACD Source")
macdfast = input(12, title="MACD Fast Length")
macdslow = input(26, title="MACD Slow Length")
macdsignal = input(9, title="MACD Signal Length")
colorup = input(color.green, title="Up Candle Color")
colordown = input(color.red, title="Down Candle Color")
/////////////////////////////////////////////////////////////////////////////////////////////// ADX AND MACD CALC
[diplus, diminus, adx] = ta.dmi(length, smoothing)
[macdline, signalline, histline] = ta.macd(macdsource, macdfast, macdslow, macdsignal)
//////////////////////////////////////////////////////////////////////////////////////////////TRADE CALC
longcheck = diplus > diminus and macdline > signalline
shortcheck = diminus > diplus and signalline > macdline
int trade = 0
//Open from nothing
if trade == 0 and longcheck
trade := 1
else if trade == 0 and shortcheck
trade := -1
//Reversal
else if trade == 1 and shortcheck
trade := -1
else if trade == -1 and longcheck
trade := 1
//Keep status quo until crossover
else
trade := trade[1]
//////////////////////////////////////////////////////////////////////////////////////////////PLOT
colors = longcheck ? colorup : shortcheck ? colordown : color.white
plotcandle(open, high, low, close, color = showcandlecolors ? colors : na)
plotshape(trade[1] != 1 and trade == 1 and showsignals, style=shape.labelup, text='BUY', textcolor=color.white, color=color.green, size=size.small, location=location.belowbar)
plotshape(trade[1] != -1 and trade == -1 and showsignals, style=shape.labeldown, text='SELL', textcolor=color.white, color=color.red, size=size.small, location=location.abovebar)
///////////////////////////////////////////////////////////////////////////////////////////// ALERTS
// Add Stop Loss
stopLossPrice = input(100, title="Stop Loss Price")
if trade == 1
strategy.entry("Long", strategy.long)
if trade == -1
strategy.entry("Short", strategy.short)
if trade == 1 and close < close[1] - stopLossPrice
strategy.close("LongExit")
if trade == -1 and close > close[1] + stopLossPrice
strategy.close("ShortExit")