La estrategia de cruce de medias móviles combina dos potentes indicadores técnicos: la media móvil ((MA) y el índice de dirección promedio ((ADX) para proporcionar un análisis técnico más preciso a los operadores. La estrategia está diseñada específicamente para el análisis de mercados dinámicos y ofrece una señal de negociación clara.
La estrategia sigue el movimiento de los precios mediante el cálculo de las medias móviles ponderadas (WMA), suaviza las fluctuaciones de los precios y genera señales de tendencia. Al mismo tiempo, calcula el índice de dirección promedio (ADX) y el índice de dinámica positiva-negativa (DI +/-), para juzgar la presencia y la intensidad de la tendencia. Cuando el ADX es superior al parámetro especificado, se considera que existe una tendencia; cuando el índice de dinámica positiva es superior al índice de dinámica negativa, se considera una señal de tendencia alcista.
La estrategia utiliza el cruce de los indicadores MA y ADX como base para la toma de decisiones comerciales. Cuando el ADX está por encima de la brecha y el DIdiff ((DI+ - DI-) es mayor que 0, se hace un alza; cuando el ADX está por encima de la brecha y el DIdiff es menor que 0, se hace una posición baja.
La estrategia combina las ventajas de las medias móviles y el índice ADX para identificar la presencia y la dirección de las tendencias de manera efectiva y reducir las señales erróneas. En comparación con un solo indicador, el indicador combinado ofrece una señal de negociación más confiable.
Además, la estrategia es una estrategia cuantitativa basada exclusivamente en el cálculo de parámetros, con una buena retroalimentación y un rendimiento estable en el disco duro, adecuada para el comercio algorítmico.
La estrategia es propensa a generar riesgos de negociación en el caso de grandes fluctuaciones en el mercado. Cuando los precios fluctúan fuertemente y el indicador no responde, la cuenta puede perder. Además, la configuración incorrecta de los parámetros del indicador también puede afectar la eficacia de la estrategia.
Se puede controlar la pérdida individual mediante el stop loss. Al mismo tiempo, se optimizan los parámetros y se combinan con filtros de otros indicadores para reducir la señal de error.
La estrategia puede ser optimizada en las siguientes direcciones:
En combinación con filtros de otros indicadores, como las bandas de Brin, RSI, etc., mejora la calidad de la señal
Optimización de los parámetros de longitud de las medias móviles y el índice ADX para encontrar la combinación óptima de parámetros
Aumentar los mecanismos de suspensión de pérdidas y controlar las pérdidas individuales
Prueba diferentes períodos de tenencia para encontrar el mejor ciclo de tenencia
La estrategia de movimiento de la media móvil cruzada es una estrategia de seguimiento de tendencias confiable que permite identificar la dirección de la tendencia del mercado mediante el cálculo de la dinámica de los precios y la intensidad de la tendencia. La estrategia es altamente algorítmica, tiene un buen rendimiento en el mercado.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © Julien_Eche
//@version=5
strategy("MA ADX Strategy", overlay=true, default_qty_type=strategy.percent_of_equity)
start_date = input(timestamp("1975-01-01T00:00:00"), title="Start Date")
end_date = input(timestamp("2099-01-01T00:00:00"), title="End Date")
// Indicator Inputs
group1 = "MA Parameters"
lengthMA = input.int(50, title="MA Length", minval=1, group=group1)
sourceMA = input(close, title="MA Source", group=group1)
group2 = "ADX Parameters"
diLength = input.int(14, title="DI Length", minval=1, group=group2)
adxSmoothing = input.int(14, title="ADX Smoothing", minval=1, maxval=50, group=group2)
adxMAActive = input.int(15, title="ADX MA Active", minval=1, group=group2)
// Directional Movement calculations
upwardMovement = ta.change(high)
downwardMovement = -ta.change(low)
trueRangeSmoothed = ta.rma(ta.atr(diLength), diLength)
positiveDM = fixnan(100 * ta.rma(upwardMovement > downwardMovement and upwardMovement > 0 ? upwardMovement : 0, diLength) / trueRangeSmoothed)
negativeDM = fixnan(100 * ta.rma(downwardMovement > upwardMovement and downwardMovement > 0 ? downwardMovement : 0, diLength) / trueRangeSmoothed)
dmSum = positiveDM + negativeDM
// Average Directional Index (ADX) calculation
averageDX = 100 * ta.rma(math.abs(positiveDM - negativeDM) / math.max(dmSum, 1), adxSmoothing)
// Line color determination
lineColor = averageDX > adxMAActive and positiveDM > negativeDM ? color.teal : averageDX > adxMAActive and positiveDM < negativeDM ? color.red : color.gray
// Moving Average (MA) calculation
maResult = ta.wma(sourceMA, lengthMA)
// Plotting the Moving Average with color
plot(maResult, color=lineColor, title="MA", linewidth=3)
// Strategy logic
if (averageDX > adxMAActive and positiveDM > negativeDM)
strategy.entry("Buy", strategy.long)
if (averageDX > adxMAActive and positiveDM < negativeDM)
strategy.close("Buy")