Estrategia de árbol de decisión de múltiples indicadores: IMACD, EMA e Ichimoku

El autor:¿ Qué pasa?, Fecha: 2024-01-22 11:25:56
Las etiquetas:

img

Resumen general

Esta estrategia integra múltiples indicadores técnicos como IMACD, EMA e Ichimoku para construir un modelo integral de árbol de decisiones para generar señales comerciales.

Estrategia lógica

  1. IMACD: MACD mejorado para captar mejor las tendencias del mercado mediante ImpulseMACD e ImpulseHisto
  2. Ichimoku: Línea de conversión gráfica, línea base, tramo A, tramo B para identificar los niveles de soporte y resistencia
  3. EMA 40: Ayudar a determinar la dirección de la tendencia
  4. Las señales largas/cortas se activan en función de condiciones específicas entre IMACD, componentes de nube y EMA 40

Signo largo: Cuando IMACD es un color específico y EMA 40 está por encima de la nube, ir largo

Cuando el IMACD está en rojo y la EMA 40 está por debajo del fondo de las nubes, corta

Análisis de ventajas

  1. La combinación de múltiples indicadores mejora la precisión del juicio sobre la tendencia
  2. Una clasificación clara del modelo de árbol de decisión genera señales comerciales inequívocas
  3. Duración de la EMA flexible para una mejor ayuda en la determinación de tendencias
  4. Identificar mejor los niveles de soporte y resistencia con indicadores de nubes y tendencias

Análisis de riesgos

  1. Ajuste de parámetros complejos con múltiples indicadores
  2. Las señales falsas pueden desencadenarse por una longitud EMA incorrecta
  3. Dificultad para el seguimiento simultáneo de muchos indicadores

Soluciones de riesgo: Optimice la configuración de parámetros, ajuste la longitud de la EMA, simplifique el flujo de trabajo.

Direcciones de optimización

  1. Mejorar la estabilidad optimizando los parámetros
  2. Las pérdidas limitadas con estrategias de stop loss
  3. Mejorar la calidad de la señal mediante pruebas de retroceso con datos masivos
  4. Construir un modelo de árbol de decisión adaptativo con aprendizaje automático

Resumen de las actividades

Esta estrategia identifica tendencias utilizando múltiples indicadores para construir un modelo de árbol de decisión para generar señales comerciales. Los pros son señales de alta calidad y precisas. Consiste en espacio para la optimización progresiva. Requiere enfoque en el ajuste de parámetros y el stop loss para controlar los riesgos para rendimientos constantes a largo plazo.


/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Decision Tree Strategy: IMACD, EMA and Ichimoku [cryptoonchain]", overlay=true)

lengthMA = input(34, title="Length MA")
lengthSignal = input(9, title="Length Signal")
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(26, minval=1, title="Lagging Span")
emaLength = input(40, title="EMA Length")  // Added user-configurable EMA length

calc_smma(src, len) =>
    smma = float(na)
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

calc_zlema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    d = ema1 - ema2
    ema1 + d

src = ohlc4
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA)

md = (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? (src > hi ? color.rgb(128, 255, 0, 26) : color.green) : (src < lo ? color.red : color.orange)

colorCondition = color.rgb(128, 255, 0, 26)

conversionLine = math.avg(ta.lowest(conversionPeriods), ta.highest(conversionPeriods))
baseLine = math.avg(ta.lowest(basePeriods), ta.highest(basePeriods))
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = math.avg(ta.lowest(laggingSpan2Periods), ta.highest(laggingSpan2Periods))

// Use user-configurable length for EMA
ema40 = ta.ema(close, emaLength)

ebc = input(false, title="Enable bar colors")
barcolor(ebc ? mdc : na)

conversionLinePlot = plot(conversionLine, color=#2962FF, title="Conversion Line", display=display.none)
baseLinePlot = plot(baseLine, color=#B71C1C, title="Base Line", display=display.none)
laggingSpanPlot = plot(close, offset=-displacement + 1, color=#43A047, title="Lagging Span", display=display.none)
leadLine1Plot = plot(leadLine1, offset=displacement - 1, color=#A5D6A7, title="Leading Span A", display=display.none)
leadLine2Plot = plot(leadLine2, offset=displacement - 1, color=#EF9A9A, title="Leading Span B", display=display.none)
kumoCloudUpperLinePlot = plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Upper Line", display=display.none)
kumoCloudLowerLinePlot = plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Lower Line", display=display.none)
fill(kumoCloudUpperLinePlot, kumoCloudLowerLinePlot, color=leadLine1 > leadLine2 ? color.green : color.red)

a = (leadLine1 > leadLine2 ? leadLine1 : leadLine2) 
b = (leadLine1 < leadLine2 ? leadLine1 : leadLine2)  

if mdc == colorCondition and ema40 > a[displacement - 1]
    strategy.entry("Long", strategy.long)

if mdc == color.red and ema40 < b[displacement - 1]
    strategy.entry("Short", strategy.short)


Más.