Indice de movimiento direccional promedio de impulso promedio de movimiento estrategia cruzada

El autor:¿ Qué pasa?, Fecha: 2024-02-29 11:50:49
Las etiquetas:

img

Resumen general

Estrategia lógica

Análisis de ventajas

Combinando las ventajas de la media móvil y el índice ADX, esta estrategia puede identificar eficazmente la existencia y la dirección de las tendencias y reducir las señales falsas.

Análisis de riesgos

Esta estrategia es propensa a riesgos comerciales durante las fluctuaciones significativas del mercado. Cuando los precios se mueven violentamente y los indicadores no reaccionan, puede traer pérdidas a la cuenta. Además, la configuración inadecuada de parámetros también puede afectar el rendimiento de la estrategia.

Las pérdidas se pueden controlar mediante el stop loss. Al mismo tiempo, los parámetros se pueden optimizar y combinar con otros indicadores para filtrar para reducir las señales falsas.

Direcciones de optimización

Se pueden optimizar los siguientes aspectos de esta estrategia:

  1. Combinar con otros indicadores de filtrado, como bandas de Bollinger, RSI, etc., para mejorar la calidad de la señal

  2. Optimizar los parámetros de longitud de la media móvil y ADX para encontrar la combinación óptima de parámetros

  3. Añadir mecanismos de stop loss para controlar pérdidas individuales

  4. Prueba diferentes períodos de espera para encontrar el ciclo de espera óptimo

Conclusión


/*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")


Más.