Una estrategia de combinación de MACD y DMI extendida en la nube basada en múltiples marcos temporales


Fecha de creación: 2024-02-02 18:04:28 Última modificación: 2024-02-02 18:04:51
Copiar: 6 Número de Visitas: 1266
1
Seguir
1617
Seguidores

Una estrategia de combinación de MACD y DMI extendida en la nube basada en múltiples marcos temporales

Descripción general

Esta estrategia utiliza una amplia extensión de la nube, el MACD y el DMI en varios marcos de tiempo para identificar posibles oportunidades de compra y venta. Su objetivo es proporcionar una referencia para los comerciantes que desean examinar el mercado desde dos dimensiones: corto y medio plazo.

Principio de estrategia

La estrategia se basa en señales de coincidencia en los gráficos de 15 minutos (M15) y 1 hora (H1) para ejecutar las condiciones de compra y venta, mientras que se refiere al marco de tiempo de 4 horas (H4) como confirmación adicional.

Condiciones de compra

  • El precio en los marcos de tiempo M15, H1 y H4 es superior a la extensión de una nube
  • La línea MACD en el gráfico H1 es superior a la línea de señal, y ambas líneas son superiores a 0
  • La línea DI+ en el gráfico H1 es más alta que la línea DI- y el ADX es de al menos 25
  • La línea MACD en el gráfico M15 es superior a 0, la línea DI+ es superior a la línea DI- y el ADX es de al menos 25

Condiciones de venta

  • Precios en los marcos de tiempo M15, H1 y H4 por debajo de una extensión de nube
  • La línea MACD en el gráfico H1 está por debajo de la línea de señal, y ambas líneas están por debajo de 0
  • La línea DI- en el gráfico H1 es mayor que la línea DI+ y el ADX es de al menos 25
  • La línea MACD en el gráfico M15 es inferior a 0, la línea DI- es superior a la línea DI+ y el ADX es de al menos 25

Entrada y salida

  • El establecimiento de posiciones múltiples cuando se cumplen todas las condiciones de compra, lo que indica un impulso al alza en el marco temporal
  • Establecer posiciones en blanco cuando se cumplan todas las condiciones de venta, lo que indica que se ha producido una tendencia a la baja a lo largo de un período de tiempo
  • Cuando se cumplen las condiciones opuestas, la posición cerrada indica una posible reversión o pérdida de impulso.

Ventajas estratégicas

  • Tener en cuenta un marco temporal más amplio para mejorar la precisión de las decisiones
  • Una nube extiende el juicio sobre la dirección y la intensidad de las tendencias
  • El MACD determina el movimiento a corto y mediano plazo
  • DMI analiza el canal de compra y venta y la actividad de la tendencia
  • Combinación de varios indicadores para evaluar la tendencia del mercado
  • Condiciones de compra y venta de parámetros ajustables
  • Se puede aplicar ampliamente en mercados con tendencias claras

Riesgo estratégico

  • Los jueces de varios marcos de tiempo pueden discrepar y dar señales erróneas.
  • Una extensión en la nube puede ser engañosa si no se usa correctamente
  • El MACD y el DMI están rezagados y podrían perder el punto de inflexión
  • Necesidad de monitorear indicadores de varios marcos de tiempo al mismo tiempo
  • El precio de los productos de la industria de la alimentación se ha visto afectado por el aumento de los precios de los productos de la alimentación.

Dirección de optimización de la estrategia

  • Optimización de las combinaciones de parámetros de extensión en una nube, MACD y DMI
  • Prueba la combinación de más marcos de tiempo, como la línea solar.
  • Aumentar la confirmación de otros indicadores, como la volatilidad y las medias móviles
  • Más datos históricos para optimizar las condiciones de compra y venta
  • Parámetros de optimización dinámica combinados con métodos como el aprendizaje automático

Resumir

Esta estrategia aprovecha al máximo las ventajas del análisis de múltiples marcos temporales y de varios indicadores para identificar la dirección y la intensidad de las tendencias. Se puede aplicar a diferentes variedades a través de ajustes de parámetros y se puede optimizar para situaciones específicas.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-25 00:00:00
end: 2024-02-01 00:00:00
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/
// © haidinh83

//@version=5
strategy("Ichimoku, MACD, DMI Multiple time frame 21/01/2024", overlay=true)
    // Khung thời gian
timeframe1 = "5"   // M5
timeframe2 = "15"  // M15
timeframe3 = "60"  // H1
timeframe4 = "240" // H4

    // Nhập tham số ADX và DI
lengthDMI = input(14, title="DMI Length")
thresholdADX = input(20, title="ADX Threshold")

// Tính giá trị Ichimoku
ichimoku(tenkanPeriod, kijunPeriod, senkouPeriod) =>
    tenkanSen = (ta.highest(high, tenkanPeriod) + ta.lowest(low, tenkanPeriod)) / 2
    kijunSen = (ta.highest(high, kijunPeriod) + ta.lowest(low, kijunPeriod)) / 2
    senkouSpanA = (tenkanSen + kijunSen) / 2
    senkouSpanB = (ta.highest(high, senkouPeriod) + ta.lowest(low, senkouPeriod)) / 2
    [tenkanSen, kijunSen, senkouSpanA, senkouSpanB]

    // Lấy Ichimoku từng khung thời gian
[tenkanM5, kijunM5, spanAM5, spanBM5] = request.security(syminfo.tickerid, timeframe1, ichimoku(9, 26, 52))
[tenkanM15, kijunM15, spanAM15, spanBM15] = request.security(syminfo.tickerid, timeframe2, ichimoku(9, 26, 52))
[tenkanH1, kijunH1, spanAH1, spanBH1] = request.security(syminfo.tickerid, timeframe3, ichimoku(9, 26, 52))
[tenkanH4, kijunH4, spanAH4, spanBH4] = request.security(syminfo.tickerid, timeframe4, ichimoku(9, 26, 52))

    // Tính giá trị MACD và Signal Line cho từng khung thời gian
[macdM5, signalM5, _] = request.security(syminfo.tickerid, timeframe1, ta.macd(close, 12, 26, 9))
[macdM15, signalM15, _] = request.security(syminfo.tickerid, timeframe2, ta.macd(close, 12, 26, 9))
[macdH1, signalH1, _] = request.security(syminfo.tickerid, timeframe3, ta.macd(close, 12, 26, 9))
[macdH4, signalH4, _] = request.security(syminfo.tickerid, timeframe4, ta.macd(close, 12, 26, 9))

  // Tính giá trị DMI cho từng khung thời gian
calcDMI(len) =>
    up = ta.change(high)
    down = -ta.change(low)
    plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    trur = ta.rma(ta.tr, len)
    plus = fixnan(100 * ta.rma(plusDM, len) / trur)
    minus = fixnan(100 * ta.rma(minusDM, len) / trur)
    adx = 100 * ta.rma(math.abs(plus - minus) / (plus + minus == 0 ? 1 : plus + minus), len)
    [plus, minus, adx]  // Đảm bảo mỗi phần của hàm nằm trên một dòng riêng biệt


[plusM5, minusM5, adxM5] = request.security(syminfo.tickerid, timeframe1, calcDMI(lengthDMI))
[plusM15, minusM15, adxM15] = request.security(syminfo.tickerid, timeframe2, calcDMI(lengthDMI))
[plusH1, minusH1, adxH1] = request.security(syminfo.tickerid, timeframe3, calcDMI(lengthDMI))
[plusH4, minusH4, adxH4] = request.security(syminfo.tickerid, timeframe4, calcDMI(lengthDMI))



// Điều kiện mua cho H1
buyConditionH1 = (close > spanAM15) and (close > spanAH1) and (close > spanAH4) and 
                 (macdH1 > signalH1) and (macdH1 > 0) and (signalH1 > 0) and 
                 (plusH1 > minusH1) and (adxH1 >= 25)

// Điều kiện mua cho M15
buyConditionM15 = (close > spanAM15) and (close > spanAH1) and (close > spanAH4) and 
                  (macdM15 > 0) and (plusM15 > minusM15) and (adxM15 >= 25)

// Điều kiện mua tổng hợp
buyCondition = buyConditionH1 and buyConditionM15

// Điều kiện bán cho H1
sellConditionH1 = (close < spanAM15) and (close < spanAH1) and (close < spanAH4) and 
                  (macdH1 < signalH1) and (macdH1 < 0) and (signalH1 < 0) and 
                  (minusH1 > plusH1) and (adxH1 >= 25)

// Điều kiện bán cho M15
sellConditionM15 = (close < spanAM15) and (close < spanAH1) and (close < spanAH4) and 
                   (macdM15 < 0) and (minusM15 > plusM15) and (adxM15 >= 25)

// Điều kiện bán tổng hợp
sellCondition = sellConditionH1 and sellConditionM15

// Thực hiện giao dịch nếu điều kiện bán hoặc mua được đáp ứng
if buyCondition
    strategy.entry("Buy", strategy.long)

if sellCondition
    strategy.entry("Sell", strategy.short)


    // Vẽ và tô màu giữa Senkou Span A và B cho mỗi khung thời gian
p1 = plot(spanAM15, color=color.blue, title="Span A M15")
p2 = plot(spanBM15, color=color.blue, title="Span B M15")
fill(p1, p2, color=color.new(color.blue, 90), title="M15 Cloud")

p3 = plot(spanAH1, color=color.purple, title="Span A H1")
p4 = plot(spanBH1, color=color.purple, title="Span B H1")
fill(p3, p4, color=color.new(color.purple, 90), title="H1 Cloud")

p5 = plot(spanAH4, color=color.orange, title="Span A H4")
p6 = plot(spanBH4, color=color.orange, title="Span B H4")
fill(p5, p6, color=color.new(color.orange, 90), title="H4 Cloud")

    // Tô màu nền và hiển thị cảnh báo
 
bgcolor(buyCondition ? color.new(color.green, 45) : sellCondition ? color.new(color.red, 45) : na)
alertcondition(buyCondition, title="Mua Signal", message="Điều kiện mua đã được đáp ứng")
alertcondition(sellCondition, title="Bán Signal", message="Điều kiện bán đã được đáp ứng")